MySQL Ricerca Tutorial

January 27

Il database MySQL consente di eseguire ricerche in linguaggio naturale su qualsiasi campo base carattere attraverso l'uso di un indice di testo completo. Una ricerca del testo completo utilizza stopword (parole che non verrà effettuata la ricerca, come ad esempio l ', e, e che), le ricerche booleane e le valutazioni di pertinenza in per restituire i risultati che corrispondono più da vicino quello che stai cercando.

Le basi

la ricerca del linguaggio naturale significa che la frase o una parola è cercato, come se 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 ad esempio uno spazio, una virgola, o il periodo. Il parser MySQL non può separare le parole senza alcun tipo di delimitatore. Il parser rimuoverà qualsiasi stopword dalle parole di ricerca (vedi Risorse per una lista di parole). I stopword non saranno parte della ricerca e se ci sono solo stopword nella ricerca saranno restituite alcun risultato.

Ogni riga che corrisponde ai parametri di ricerca viene assegnato un punteggio di pertinenza ei risultati vengono restituiti basa sulla valutazione, dal più alto al più basso. Ricerche che corrispondono a più del cinquanta per cento delle righe o meno di tre righe di dati non vengono restituiti. Questo è molto diverso dalla funzione come (), che funziona come una espressione regolare, la ricerca della stringa esatta indipendentemente dal posizionamento e la frequenza di occorrenza.

la sintassi

Al fine di sostenere la ricerca full text, la tabella deve essere creato con un indice full TESTO e le colonne indicizzate deve avere un tipo di dati carattere (char, varchar o testo).

CREATE TABLE articoli
(Id INT (10) DEFAULT '0' AUTO_INCREMENT,
DATA date_posted,
categoria INT (2),
titolo VARCHAR (255) NOT NULL,
Testo NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (categoria),
FULLTEXT (titolo, articolo))
ANDARE

Per interrogare i dati, è necessario utilizzare un'istruzione SELECT come:

SELECT id, titolo FROM articoli WHERE MATCH (titolo, articolo) CONTRO ( 'MySQL')
ANDARE

La clausola partita deve essere esattamente lo stesso come i campi specificati nell'indice testo completo.

Per usare un luogo di ricerca booleana le parole "nel modo booleani" dopo la stringa di ricerca.

SELECT id, titolo FROM articoli WHERE MATCH (titolo, articolo) CONTRO ( '+ MySQL -PHP' IN MODO BOOLEAN)
ANDARE

Questa query corrisponderà tutti gli articoli che contengono la stringa "MySQL", ma non contengono la stringa "PHP." Per un elenco completo degli operatori booleani vedi Risorse, di seguito.