0

SQL Server 2008 の全文検索を使用しており、FreeTextTable に参加して結果のランキングを決定しています。

結果セットが正確に一致しているかどうかを判断するにはどうすればよいですか?

たとえば、ある検索で次のような結果が得られる場合があります。

Manufacturer | Rank
===================

LG U300 ------- 102
LG C1100 ------ 54
LG GT505 ------ 18
LG KF300 ------ 18
LG Callisto --- 18
...

ランク範囲の広がりは、1 つの結果が他のすべての結果よりも圧倒的に関連性が高いことを示唆しており、上位の結果が検索用語に正確に一致する可能性が最も高いことを示しています。

しかし、別の検索では、次の結果が得られる場合があります。

Manufacturer | Rank
===================

LG C1100------- 33
LG GC900 ------ 31
LG GT500 ------ 31
LG KC910 ------ 31
LG KF310 ------ 31
...

この結果セットのランク範囲が広がっていないことは、検索結果が不正確であることを示しています。

ランクの広がりが結果が正確であることを示唆しているかどうかを示すブール値を結果の追加の列として出力するにはどうすればよいですか?

ありがとうございました!

4

3 に答える 3

1

結果セットの中央値と上位ランクの値との差のパーセンテージを計算します。結果が大きいほど、一致の精度が高くなります。

最初の結果セットの場合: (102-18)/102 = 82.35%。

次に、コードにベースラインを設定します。たとえば、スプレッドが 40% を超える場合、行 1 に正確な結果が含まれている可能性があります。ベースライン値を決定するために、さまざまな検索でいくつかのテストを実行します。

于 2009-08-15T18:05:17.567 に答える
0

もちろん、分散を「広がり」の指標として使用することもできますが、これは正しいアプローチではないと思います。(特に、最初の n 件の結果のみを見る場合。)

情報検索では関連性が重要です。それは、ランキング方法と、検索語が出現する確率、および他の検索語との関連性に依存します。あなたができること:

ランダムなドキュメント内の検索語の予想出現回数 (平均回数) を計算します。次に、返された結果の出現回数を比較します。あなたのランキングは counts-in-my-doc / mean-count になります。この結果が 1 よりも大幅に高い場合、ドキュメントは関連性があります。

于 2009-08-15T15:52:00.707 に答える