MySQL supporta dalla versione 3.23 le query full-text. Nella versione 4 è finalmente giunto alla maturità e può cominciare ad essere utilizzato.
Per sfruttare questa caratteristica è necessario definire un nuovo indice, di tipo full-text, sulla tabella. Se la ricerca deve essere fatta su più colonne, è necessario definire un indice a cui entrambe le colonne appartengano.
Per il resto si tratta di eseguire più o meno una query come questa:
<% strSQL = "SELECT ID, Titolo, MATCH (titolo, descrizione) AGAINST ('chiave di ricerca') as SCORE" & _ " FROM contenuti WHERE MATCH (titolo, descrizione) AGAINST ('chiave di ricerca') ORDER BY SCORE DESC" %>
Avremo una nuova colonna SCORE che potremo utilizzare, tra l'altro, per l'ordinamento (o per filtrare occorrenze troppo basse come valore).
Un paio di considerazioni personali: di lavoro ce n'è ancora da fare, il motore è tutt'altro che preciso, anche a causa del fatto che l'operatore booleano di default è l'OR.
Ho provato la stessa ricerca sulle stesse tabelle, con MySQL e con SQL Server (è quella che trovate nel motore di ricerca del sito): inutile sottolineare che quella di SQL Server si è rilevata molto più precisa.
Per approfondimenti nel manuale MySQL:
http://www.MySQL.com/doc/en/Fulltext_Search.html
Per la ricerca full-text con SQL Server:
https://www.aspitalia.com/articoli/db/full-text.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.