Per presentare un esmpio pratico sull'impiego delle ricerche FULL TEXT inseriremo del contenuto all'interno della nostra tabella "news":
INSERT INTO news(id,data,autore,titolo,descrizione)
VALUES (
'',
'2006-06-21',
'Cicerone',
'Lorem ipsum' ,
'Nunc ultricies pretium orci. Integer tortor.
Nam varius quam. Curabitur quis felis nec
mauris rhoncus fringilla. Fusce sed magna
eu neque imperdiet gravida.'
) ;
Quello proposto è solo un esempio, naturalmente il lettore dovrà sulla base di questo aggiungere più contenuti alla tabella in modo da rendere possibili i confronti e la generazione dei livelli di corrispondenza.
Di seguito riportiamo il codice necessario per operare all'interno dei nostri dati una semplice ricerca basata su una chiave:
SELECT `titolo`, MATCH (`titolo`,`descrizione`)
AGAINST ('tortor') AS new_tb
FROM news ORDER BY `new_tb` DESC
Lo scopo dell'istruzione appena descritta, è in pratica quello di ricercare all'interno dei contenuti indicizzati la chiave "tortor" e di visualizzare in output i titoli e gli SCORE ottenuti. Da notare l'utilizzo del costrutto AS che ci permette di creare un output virtuale chimato "new_tb" in sostituzione del meno leggile "MATCH (`titolo`,`descrizione`) AGAINST ('tortor')" che poi non è altro se non l'elenco degli SCORE.
Passiamo ora ad un esempio pratico di ricerca FULL TEXT più raffinata in cui vengono filtrati i risultati:
SELECT titolo, MATCH (`titolo`,`descrizione`)
AGAINST ('tortor') AS new_tb
FROM news
WHERE MATCH (`titolo`,`descrizione`) AGAINST ('tortor')
ORDER BY new_tb DESC
L'istruzione descritta sopra contiene due passaggi fondamentali: innanzitutto viene operata un SELECT dei record corrispondenti al campo "titolo" sulla base di un confronto (AGAINST) col parametro chiave di input; in secondo luogo si specifica che il confronto dovrà riguardare soltanto i record dei campi indicizzati restituisce un risultato diverso da FALSE. Per cui in output avremo una "classifica" contenente soltanto i record dotati di uno SCORE diverso da zero.
Per filtrare ulteriormente gli esiti delle nostre ricerche potremo anche utilizzare più parametri e operare confronti in senso booleano:
SELECT titolo, MATCH (`titolo`,`descrizione`)
AGAINST ('tortor magna' IN BOOLEAN MODE) AS new_tb
FROM news
WHERE MATCH (`titolo`,`descrizione`)
AGAINST ('tortor magna' IN BOOLEAN MODE)
ORDER BY new_tb DESC
In questo caso, abbiamo deciso di operare una ricerca limitata ai record in cui vengono associate le stringhe "tortor" e "magna". Da notare l'utilizzo dell'istruzione IN BOOLEAN MODE con il quale indichiamo che la ricerca deve esse operata in termini logici (0/1).
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.
|