2013-05-16 6 views
7

Ho una domanda riguardante questo articolo: http://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html.mysql - indice di testo completo - che cos'è la modalità lingua naturale

qui ho trovato domande come

SELECT * FROM articles 
WHERE MATCH (title,body) 
AGAINST ('database' IN NATURAL LANGUAGE MODE); 

Quello che non capisco è che cosa è esattamente la modalità del linguaggio naturale? Non trovo nessuna definizione esatta da nessuna parte.

Qualcuno può fornire una definizione? Come funziona?

risposta

14

Le ricerche full-text in linguaggio naturale di MySQL mirano a far corrispondere le query di ricerca a un corpus per trovare le corrispondenze più pertinenti. Quindi supponiamo di avere un articolo che contiene "I love pie" e abbiamo i documenti d1, d2, d3 (il database nel tuo caso). I documenti 1 e 2 riguardano rispettivamente lo sport e la religione e il documento 3 riguarda il cibo. La tua ricerca,

SELECT * FROM articoli WHERE MATCH (titolo, contenuto) against ('database' IN NATURALE modo della lingua);

Restituirà d3 e quindi d2, d1 (ordine casuale di d2, d1 a seconda di quale è più uguale all'articolo) poiché d3 corrisponde meglio all'articolo.

L'algoritmo sottostante utilizzato da MYSQL è probabilmente l'algoritmo tf-idf, dove tf sta per frequenza di termine e idf per la frequenza inversa del documento. tf è come dice, solo il numero di volte che una parola w nell'articolo si verifica in un documento. idf si basa su quanti documenti contiene la parola. Quindi le parole che si presentano in molti documenti non contribuiscono a decidere il documento più rappresentativo. Il prodotto di tf * idf produce un punteggio, più alto è, migliore è la parola rappresenta un documento. Quindi la "torta" si presenterà solo nel documento d3 e avrà quindi un alto tf e un alto idf (poiché è l'inverso). Considerando che "il" avrà un Tf alto ma un ID basso che evidenzierà il TF e darà un punteggio basso.

La modalità di linguaggio naturale MYSQL viene fornita con una serie di stopword (il, a, alcuni ecc.) E rimuove le parole con meno di 4 lettere. Che può essere visto nel link che hai fornito.

Alcune parole vengono ignorate nelle ricerche full-text:

Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is three characters for 

gli indici di ricerca InnoDB, o quattro caratteri per MyISAM. Puoi controllare il taglio impostando un'opzione di configurazione prima di creare l'opzione : innodb_ft_min_token_size per gli indici di ricerca InnoDB o ft_min_word_len per MyISAM.

Words in the stopword list are ignored. A stopword is a word such as “the” or “some” that is so common that it is considered to have 

valore semantico zero. Esiste un elenco di parole ferme incorporato, ma può essere sostituito da un elenco definito dall'utente da . Gli elenchi di parole chiave e le relative opzioni di configurazione sono diversi per gli indici di ricerca InnoDB e quelli per MyISAM . L'elaborazione di Stopword è controllata dalle opzioni innodb_ft_enable_stopword, innodb_ft_server_stopword_table, e innodb_ft_user_stopword_table per gli indici di ricerca InnoDB e ft_stopword_file per quelli MyISAM.

Problemi correlati