MySQLで名前のプレフィックス一致(5000万オプション)を実現するために、2つのオプションのどちらかを決定しようとしています。使用法は、検索結果のオートコンプリートです。ジレンマは構築の間にあります:
- VARCHARのインデックスであり、LIKE'word%'クエリを実行します
- FTS(全文検索)インデックスとMATCH'word*'クエリの実行
そのような場合にはどちらが良いですか?このような名前のオートコンプリートを自動提案するための追加のFTS機能を検討する必要がありますか?
MySQLで名前のプレフィックス一致(5000万オプション)を実現するために、2つのオプションのどちらかを決定しようとしています。使用法は、検索結果のオートコンプリートです。ジレンマは構築の間にあります:
そのような場合にはどちらが良いですか?このような名前のオートコンプリートを自動提案するための追加のFTS機能を検討する必要がありますか?
FTSとプレフィックスマッチングは2つの異なるものです。したがって、答えは実際の要件によって異なります。
条件に完全に一致するすべての結果のリストを返す必要がありますcolumn LIKE 'word%'
か?具体的には、文字列は探している単語で始まる必要があります。
全文検索は、関連性に基づいてマッチングを行います。特定の文字列に一致するものが常に提供されるとは限りません。ステミングを行い、ストップワードがあり、単語が一般的すぎる場合は結果を省略します。
この場合の最良の答えは「全文検索はあなたが思っていることを完全には実行しない」だと思います。したがって、マッチングの正確な要件がある場合は、機能する方法に固執する必要があります。