2012-10-24 2 views
6

Sto provando a trovare la stringa "zen" in un campo contenente "The Zen Circus". Ho un indice FULLTEXT.Ricerca full text su mysql con una parola di 3 lettere

select url,name, 
, MATCH(name) AGAINST ('zen*' IN BOOLEAN MODE) as A 
, MATCH(name) AGAINST ('"the zen*"' IN BOOLEAN MODE) as B 
, MATCH(name) AGAINST ('>the* zen' IN BOOLEAN MODE) as C 
, MATCH(name) AGAINST ('thezen*' IN BOOLEAN MODE) as D 
, MATCH(name) AGAINST ('cir*' IN BOOLEAN MODE) as E 
, MATCH(name) AGAINST ('circus*' IN BOOLEAN MODE) as F 
from pages where url='thezencircus' 

ho questo risultato:

url = thezencircus 
name = The Zen Circus 
A = 0 (why?) 
B = 0 (why?) 
C = 0 (why?) 
D = 0 (ok) 
E = 1 (ok) 
F = 1 (ok) 

Ho anche putted ft_min_word_len = 2 nel file di configurazione msyql.

Qualche idea?

risposta

9

Vai a questa risposta MySQL full text search for words with three or less letters

[mysqld]
ft_min_word_len = 3
Quindi è necessario riavviare il server e ricostruire gli indici FULLTEXT.

Ricordare di riavviare e ricostruire gli indici.


Modifica
Run show variables like 'ft_%'; per confermare che la lunghezza della parola corrisponde a quello che si imposta.

+0

Ho fatto tutto ciò che hai detto, grazie, ma il problema è ancora qui. :-( – Pons

+0

Prova a eseguire le pagine di RIPARAZIONE TAVOLA QUICK; Inoltre, solo per essere sicuro di averlo fatto bene, sull'impostazione di ft_min_word_length: http://lostquery.com/questions/196/how-do-i-enable-short-3 -letter-full-text-search-in-mysql è così che l'hai fatto? – Kao

+0

Inoltre, vedi la mia modifica su come confermare il valore di ft_min_word_len – Kao