質問

データベースから情報を取得するために、次の呼び出しを使用します。

select * 
from submissions 
where 
   match( description ) against ('+snowboard' in boolean mode ) 
   and (!disabled or disabled='n') 
order by datelisted desc limit 30

つまり、説明に「スノーボード」があるすべてが見つかります。これが問題です:

select *
from submissions 
where 
  match( description ) against ('+snowboard +mp4' in boolean mode ) 
  and (!disabled or disabled='n') 
order by datelisted desc limit 30

何らかの理由で +MP4を無視し、最初のクエリと同じものを返します

select * 
from submissions 
where 
   match( description ) against ('+mp4' in boolean mode ) 

何も返さないので、基本的には検索で無視されているように見えます

誰かがこの行動を回避する方法を知っていますか?

役に立ちましたか?

解決

MySQLのブールモードは、特定の長さよりも長い単語のみと一致します。と mp4 短すぎます。しきい値を変更するには、MySQLを再コンパイルする必要があります

編集:結局のところ、これは構成ファイルを介して設定できます。 http://dev.mysql.com/doc/refman/5.0/en/fulltext-fine-tuning.html Furhter Reference用

他のヒント

問題は最小の単語長であり、デフォルトでは3文字です。同じことを試してみてください +snowboard +scooter そして、あなたはそれが機能することを見るでしょう。 (もちろん、データベースにスクーターがないとします)。

見る 微調整MySQLフルテキスト検索 それを変更する方法について:

インデックス作成される単語の最小および最大長さは、 ft_min_word_lenft_max_word_len システム変数。 (セクション5.1.4、「サーバーシステム変数」を参照してください。)デフォルトの最小値は4文字です。デフォルトの最大値はバージョン依存です。どちらの値を変更した場合は、FullTextインデックスを再構築する必要があります。たとえば、3文字の単語を検索可能にする場合は、次の行をオプションファイルに配置することで、FT_MIN_WORD_LEN変数を設定できます。

[mysqld] ft_min_word_len=3

次に、サーバーを再起動し、フルテキストインデックスを再構築します。特に、このリストに続く指示におけるMyisamchkに関する発言に注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top