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: 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