Operatori e ricerche FULL TEXT in MySQL
05/09/2006
Esistono due metodi per operare una ricerca FULL TEXT, uno basato sulla ricerca semplice, l'altro basato sulla ricerca logico-booleana. In entrambi i casi la procedura di ricerca si basa su determinate istruzioni SQL:
MATCH (campi) AGAINST (chiave di ricerca)
SELECT nome_campo, MATCH (campi indicizzati)
AGAINST ('chiave di ricerca')
FROM nome_tabella
Una volta eseguita l'istruzione verrà restituito un output basato sul principio della corrispondenza, quindi tutti i record verranno discriminati sulla base di un livello di corrispondenza detto
SCORE espresso in valore decimale; più alto sarà lo
SCORE maggiore sarà la pertinenza del risultato, i risultati ritenuti privi di corrispondenza verranno associati ad uno SCORE pari a zero.
L'istruzione presentata non permette però di filtrare i risultati ottenuti, infatti le ricerche
FULL TEXT in realtà non ricercano stringhe ma pertinenze tra chiavi di input e contenuti memorizzati; da questo punto di vista sono quindi interessanti tutti i risultati anche quelli che non presentano corrispondenze, ciò che conta è la "classifica finale".
Saranno però sufficienti alcuni accorgimenti sintattici per ovviare alla problematica descritta e ottenere output filtrati da cui sono stati rimossi i record non rilevanti ai fini della ricerca:
SELECT nome_campo, MATCH (campi_indicizzati)
AGAINST ('chiave di ricerca')
FROM nome_tabella
WHERE MATCH (campi_indicizzati) AGAINST (‘chiave di ricerca’)
In questo caso tutti i risultati pari a zero verranno classificati come
FALSE in senso logico e non saranno presenti all'interno del risultato finale.
Per "raffinare" le nostre ricerche, abbiamo a disposizione una serie di operatori che potranno essere utilizzati per operare ulteriori filtraggi e restringere gli output soltanto ai record dotati di
SCORE più elavati:
- *: consente di omettere un certo numero di caratteri all'interno della chiave di ricerca (carattere jolly).
- ~: diminuisce lo SCORE di una determinata chiave senza però escluderla dalla ricerca (tilde).
- ‘' ‘': consente l'introduzione di caratteri non alfanumerici.
- (): definisce un'espressione.
- &: congiunzione di tipo logico (AND).
- |: operatore logico OR.
- +: indica che una ricerca è valida solo se la chiave indicata è presente su tutti i record.
- -: indica che una ricerca è valida solo se la chiave indicata non è presente su tutti i record.
- < e >: diminuisce o aumenta il livello di corrispondenza di una determinata chiave.
Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a
Mrwebmaster.it; ne è vietata la riproduzione,
anche parziale, senza l'esplicito consenso dell'autore e della redazione di
Mrwebmaster.it.
© Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.
Stampa :: Torna alla Home