9

「The Zen Circus」を含むフィールドで「the zen」の文字列を見つけようとしています。FULLTEXT インデックスがあります。

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'

私はこの結果を得ました:

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

また、msyql 構成ファイルに ft_min_word_len = 2 を入れました。

何か案が?

4

3 に答える 3

10

この回答を参照してくださいMySQL 全文検索で 3 文字以下の単語を検索

[mysqld]
ft_min_word_len=3
次に、サーバーを再起動して、FULLTEXT インデックスを再構築する必要があります。

インデックスを再起動して再構築することを忘れないでください。



Runを編集show variables like 'ft_%';して、語長が設定した値と一致することを確認します。

于 2012-10-24T13:02:09.940 に答える