Indicizzazione e ricerca MySQL FULLTEXT
Posted on 10. Sep, 2007 by Administrator in mysql, tutorials
MySQL supporta indicizzazione FULLTEXT dalla versione 3.23.23. Le colonne VARCHAR e TEXT che sono state indicizzate con FULLTEXT posso esserer usate con speciali query sql che sono piu performanti nella ricerca full text in MySQL.
Per iniziare occorre definire indici FULLTEXT in piu colonne. Come altre indicizzazioni, l'indicizzazione FULLTEXT puo contenere colonne multiple. Vediamo come alterare una tabella per aggiungere questa caratterisitca:
ALTER TABLE news ADD FULLTEXT(headline, story);
Adesso abbiamo un indica FULLTEXT, tu puoi cercarlo usando gli statemente MATCH e AGAINST. Ad esempio:
SELECT headline, story FROM news
WHERE MATCH (headline,story) AGAINST ('Hurricane');
Il risultato di questa query è ordinato in automatico per rilevanza.
MATCH
La funzione MATCH è usata per specificare il nome della colonna che identifica la tua collection FULLTEXT.La lista di colonne dentro la funzione MATCH trova esattamente le corrispondenze della definizione dell'indice FULLTEXT
AGAINST
LA funzione AGAINST è dove la tua query di ricerca full text va. Puoi usare le congiunzioni booleane per aumentare le performance della ricerca.
Boolean Mode Searches
SELECT headline, story FROM news
WHERE MATCH (headline,story)
AGAINST ('+Hurricane -Katrina' IN BOOLEAN MODE);
Lo statement above vorrebbe trovare nuove storiema l'hurricanes non menziona l'hurricane katrina.
Vedi la documentazione MySQL per maggiori info.
Query Expansion
L'espansione della Query (o rilevanza di feedback automatici) caratteristica che puo essere utilizzata per espandere i risultati della ricerca.
In molti casi puoi usare questa operazione se lw query ritornano pochi risultati,puoi provare di nuovo con WITH QUERY EXPANSION e aggiungerai parole che sono comunemente trovate con le parole nella query.
SELECT headline, story FROM news
WHERE MATCH (headline,story)
AGAINST ('Katrina' WITH QUERY EXPANSION);
Ritorna tutte le nuove storie su hurricanes, non solo contenti Katrina.




Leave a reply