I’m trying to find “the zen” string in a field containing “The Zen Circus”.
I’ve got a FULLTEXT index.
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'
I’ve got this result:
url = thezencircus
name = The Zen Circus
A = 0 (why?)
B = 0 (why?)
C = 0 (why?)
D = 0 (ok)
E = 1 (ok)
F = 1 (ok)
I’ve also putted ft_min_word_len = 2 in the msyql config file.
Any idea?
See this answer MySQL full text search for words with three or less letters
Remeber to restart and rebuild indexes.
Edit
Run
show variables like 'ft_%';to confirm that the word length matches what you set it to.