問題
フルテキスト検索を実行しようとしたとき製品情報を含む MySQL テーブルでは、一致する用語が存在するにもかかわらず、結果が返されません。たとえば、「製品」列で「ペン」または「一本のペン」を検索すると、結果は返されません。
調査
テーブル スキーマを調べると、 「Product」列が FULLTEXT インデックスとして定義されていることが判明しました。ただし、このテーブルには、「ペン」と「1 本のペン」という用語を含むデータが 2 行しか含まれていませんでした。
解決策
1.データの多様性の増加:
全文検索アルゴリズムでは、意味のあるパターンを検出するために十分な量のデータが必要です。データが 2 行しかないため、アルゴリズムは一般的な単語と一般的ではない単語を区別できず、結果として悪い検索結果が得られました。
例:
さまざまな用語やフレーズを含むデータが増えると、アルゴリズムによって単語がより適切に分類され、検索の精度が向上します。
2.ストップ ワードのオーバーライド:
MySQL は、通常、全文検索から除外されるストップ ワードと呼ばれる一般的な単語のリストを管理します。ただし、場合によっては、ストップワードが検索に関連する場合があります。
例:
デフォルトのストップワード リストをオーバーライドすることで、「年」などの関連用語が検索に関連するようになります。検索結果に「」または「スコア」を含めることができます。
3.ブール値モードと自然言語モードの使用:
ブール値モードでは完全一致が必要ですが、自然言語モードではバリエーションや同義語が許可されます。自然言語モードを使用すると、検索結果の範囲を広げることができます。
例:
これらの手法を使用すると、全文検索機能を強化して正確な検索結果を提供できます。より広範囲のクエリに対して意味のある結果が得られます。
以上がデータとストップワードが不十分なため、MySQL 全文検索が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。