2

「レーシングフレームがアップグレードされた赤い自転車」という名前の製品の場合、包含可能な検索では次のようになります。

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を使用することを選択しました。部分的および完全一致検索に加えて。

製品名の結果は他の結果と集約されています。たとえば、ユーザーが検索を実行すると、製品名と製品の説明の両方が検索され、結果が結合されます。このため、製品名の完全一致を最高ランクにしたいと思いますが、現在、説明の全文一致が製品名の完全一致を上回る場合があります。

検索タイプごとに複数のクエリを記述したり、ランク値をハードコーディングしたりしないようにしています。

4

1 に答える 1

1

とにかく、必要CONTAINSTABLEなように全文検索結果を含む列に加重値を指定することはできないと思います。

個々の列で使用することにより、独自のカスタム「ランク付け」システムを実装できFREETEXTTABLEます。次に、結果をランク付け結果のカスタムの重み付き値と一緒にUNIONして、回避策として「製品名」の精度を大幅に高めます。

于 2013-03-27T14:36:40.340 に答える