Corsi on-line

Full Text Search in MySQL: natural e boolean mode

Il Database Manager MySQL supporta l’implementazione di funzionalità per la ricerca tramite query basate sul cosiddetto natural language, un po’ come accade nei motori di ricerca tradizionali attraverso le keywords; a seguito delle interrogazioni formulate si otterranno dei risultati ordinati in base al criterio della rilevanza, per cui, lanciando una query come la seguente:

SELECT id, MATCH (titolo,testo) AGAINST ('post') FROM blog;

il DBMS effettuerà una scansione Full Text a carico dei record ignorando le cosiddette stopwords, cioè quei termini, come per esempio gli articoli, gli aggettivi e i pronomi indefiniti, che ricorrono in modo talmente frequente nei testi da poter essere considerati non rilevanti ai fini della ricerca; nello stesso modo verranno ignorate le parole che compaiono almeno nella metà dei record in modo da ottenere risultati più circostanziati e precisi.

MySQLIn alternativa, è possibile utilizzare il cosiddetto boolean mode; un semplice esempio di modalità booleana applicata al Full Text Search in MySQL potrebbe essere il seguente:

SELECT id
FROM blog
WHERE MATCH (titolo,testo)
AGAINST ('+post -articolo'IN BOOLEAN MODE);

Nello specifico, vengono utilizzati gli operatori “+” e “-“, essi in pratica consentono di definire quale termine debba essere presente nei risultati (attraverso il “+” come in “+post”) e quale invece debba essere assente (tramite il “-” come in “-articolo”). L’approccio booleano funziona in modo diverso da quello basato sul linguaggio naturale, tanto da influenzare la stessa generazione dei risultati; il primo infatti non prevede un ordinamento per rilevanza, funziona anche in assenza di un indice FULLTEXT (non senza ripercussioni negative sulle prestazioni) e non esclude le stringhe che compaiono almeno nel 50% dei record.

Post correlati
I più letti del mese
Tematiche