Il database MySQL consente di eseguire ricerche in linguaggio naturale su qualsiasi campo base di carattere attraverso l'uso di un indice FULLTEXT . Una ricerca generica usa parole non significative ( parole che non verrà effettuata la ricerca , come il , e, e che ) , ricerche booleane e le valutazioni di pertinenza in modo che restituisca risultati che maggiormente corrispondono a quello che stai cercando. The Basics
linguaggio naturale ricerca indica che la frase o parola viene ricercata come se ne parlava , senza operatori speciali . Per un MySQL ricerca in linguaggio naturale le stringhe di ricerca devono avere da quattro a 254 caratteri e le parole devono essere separate da un delimitatore , come uno spazio , una virgola o periodo . Il parser MySQL non può separare le parole senza un qualche tipo di delimitatore . Il parser rimuoverà eventuali stopwords dalle parole di ricerca ( vedi Risorse per una lista di parole ) . Le parole non significative non faranno parte della ricerca e se ci sono solo le parole non significative nella ricerca sarà restituito alcun risultato .
Ogni riga che corrisponde ai parametri di ricerca viene assegnato un punteggio pertinenza ed i risultati vengono restituiti in base alla punteggio , dal più alto al più basso. Ricerche che corrispondono a oltre il 50 per cento delle righe o meno di tre righe di dati non vengono restituiti . Questo è molto diverso dalla funzione PIACE ( ), che funziona come una espressione regolare , cercando la stringa esatta indipendentemente dalla collocazione e la frequenza di occorrenza .
La sintassi
al fine di sostenere la ricerca full text , la tabella deve essere creata con un indice completo e le colonne indicizzate deve avere un tipo di dati carattere ( char , varchar o text ) .
cREATE tABLE articoli ( id INT ( 10 ) DI DEFAULT '0 ' AUTO_INCREMENT , DATA date_posted , categoria INT ( 2 ) , titolo VARCHAR ( 255 ) NOT NULL , articolo TEXT NOT NULL , PRIMARY KEY ( id ) , FOREIGN KEY ( categoria ) , FULLTEXT (titolo , articolo) ) ;
Per interrogare i dati , è necessario utilizzare una istruzione SELECT come :
SELECT id , titolo FROM articoli WHERE MATCH ( titolo , articolo) AGAINST ( ' MySQL ');
la clausola di corrispondenza deve essere esattamente lo stesso come i campi specificati nell'indice FULLTEXT .
Per usare un luogo di ricerca booleana le parole "nel modo booleano" dopo la stringa di ricerca .
SELECT id , titolo FROM articoli WHERE MATCH ( titolo , articolo) AGAINST ( '+ MySQL - PHP ' IN MODO Boolean) ;
Questa query corrispondere tutti gli articoli che contengono la stringa " MySQL ", ma non contengono il stringa " PHP ". Per un elenco completo degli operatori booleani vedi Risorse , qui di seguito.