2009-08-15 29 views
0

SQL Server 2008フルテキスト検索を使用して、FreeTextTableに参加して結果のランク付けを決定しています。SQL Serverからの正確な一致の特定フルテキスト検索

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

例えば、1件の検索のために私は、これらの結果を得ることがあります。

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 
... 

欠如はinacurate検索結果を示しています。

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

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

答えて

0

「分散」の指標として分散を使用することもできますが、これは適切なアプローチではないと思います。 (特に最初の結果のみを見ると)

妥当性は情報検索の大きな要素です。それは、順位付け方法および他の検索語の関連性に加えて、検索語が出現する確率に依存する。何かできること:

ランダムなドキュメントの検索語句の予想される出現数(平均数)を計算します。その後、返された結果の出現回数を比較します。あなたのランクは、カウント・イン・マイ・ドック/平均カウントになります。この結果が1よりもはるかに高い場合、文書は関連します。

1

結果セットの中央値と最上位の値のパーセント差を計算します。結果が大きければ一致する可能性が高くなります。

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

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

0

追加のクエリを実行して、一致が正確な一致とどれほど良いかを調べることができます。次に、ベンチマークの完全一致ランクを100%として取ることができます。

DECLARE @Manufacturer varchar(500) 
DECLARE @tManufacturer varchar(500) 
DECLARE @maxRank int 

SET @Manufacturer = 'your search term' 

SELECT @tManufacturer=Manufacturer 
FROM ManufacturerTable m 
INNER JOIN FREETEXTTABLE(ManufacturerTable, Manufacturer, @Manufacturer, 1) AS KEY_TBL 
ON m.ManufacturerID = KEY_TBL.[KEY] 

if (@tManufacturer is null) 
SET @tManufacturer = @Manufacturer 

SELECT @maxRank=Rank 
FROM ManufacturerTable m 
INNER JOIN FREETEXTTABLE(ManufacturerTable, Manufacturer, @tManufacturer, 1) AS KEY_TBL 
ON m.ManufacturerID = KEY_TBL.[KEY] 

SELECT Manufacturer, KEY_TBL.RANK*100/@maxRank as MatchRank 
FROM ManufacturerTable m 
INNER JOIN FREETEXTTABLE(ManufacturerTable, Manufacturer, @tManufacturer, 10) AS KEY_TBL 
ON m.ManufacturerID = KEY_TBL.[KEY] 

警告:いくつかの状況では、あなたがMatchRank > 100ので、解決策は完璧ではありません得ることができます。

関連する問題