「レーシングフレームがアップグレードされた赤い自転車」という名前の製品の場合、包含可能な検索では次のようになります。
containstable(tbl, col, '"red bike"') Rank: 100
containstable(tbl, col, '"red bike with upgraded racing frame"') Rank: 255
私の質問は次のとおりです。
- 2番目の検索で1000ではなく255が返されるのはなぜですか?containstable以外のものを使用する必要がありますか?
- 私の最終結果を達成するためのより良い方法はありますか?
私が探している最終結果は、製品名をすばやく検索する方法です。テストでは、'tbl.col.field=""またはtbl.col.fieldlike'%%''を実行するよりも大幅に高速であり、全文検索を実行できるようにしたいため、containstableを使用することを選択しました。部分的および完全一致検索に加えて。
製品名の結果は他の結果と集約されています。たとえば、ユーザーが検索を実行すると、製品名と製品の説明の両方が検索され、結果が結合されます。このため、製品名の完全一致を最高ランクにしたいと思いますが、現在、説明の全文一致が製品名の完全一致を上回る場合があります。
検索タイプごとに複数のクエリを記述したり、ランク値をハードコーディングしたりしないようにしています。