0

奇妙な問題があります。MySQL 5.1 とFulltable-Indexを持つテーブルを使用しています。mysql 構成でft_min_word_lenは、 は 2 に設定されています (つまり、長さが 2 文字以上の単語が索引付けされます)。

以下のクエリは簡略化されていますが、元のクエリと同じ効果があります。

私が検索すると:

SELECT company FROM my_table WHERE MATCH (company) AGAINST ('intern*' IN BOOLEAN MODE)

「International Inc.」、「Internship.org」など、名前に「internat」が含まれる会社を取得します。

しかし、私が検索すると:

SELECT company FROM my_table WHERE MATCH (company) AGAINST ('just*' IN BOOLEAN MODE)

「Justice & Travelling」というテーブルにエントリがありますが、結果が得られません。

しかし、私が検索すると:

 SELECT company FROM my_table WHERE MATCH (company) AGAINST ('travelling*' IN BOOLEAN MODE)

"Justice & Travelling" - エントリ / 正しい結果が得られます。

LIKE %just%の代わりに で検索するとMATCH-AGAINST、正しい結果も得られます。

2番目に言及されたクエリで正しい結果が得られないのはなぜですか?

4

1 に答える 1

1

トラブルメーカーが見つかりました:
ストップワード リストが原因でした。次の行を my.cnf に追加してリストを無効にすると、問題が解決しました:
ft_stopword_file = ''

詳細については、以下のリンクを参照してください:
MySQL: 11.9.6. MySQL 全文検索の微調整
MySQL: 11.9.4. 全文ストップワード

于 2012-03-03T16:05:01.067 に答える