5

管理スタジオ GO で非常に奇妙な動作が発生しています。
私は全文検索チュートリアルに従っており、アドベンチャー作品に対して次のクエリを実行しています

 SELECT FT_TBL.ProductDescriptionID,
 FT_TBL.Description, 
 KEY_TBL.RANK
 FROM Production.ProductDescription AS FT_TBL INNER JOIN
    CONTAINSTABLE (Production.ProductDescription,
      Description, 
      '(light NEAR aluminum) OR
      (lightweight NEAR aluminum)'
    ) AS KEY_TBL
    ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
 WHERE KEY_TBL.RANK > 2
 ORDER BY KEY_TBL.RANK DESC;

Go (クエリの前) と Go なしで実行すると、結果が異なります。私はそれをもう少しいじりました-選択をコピーして間に追加しましたが、結果はまだ異なります。図から、同じ選択が 2 回書き込まれているが、結果が 2 つ異なることに注意してください。

ここに画像の説明を入力

何か案が?

編集: go
------LINK----------のために実行計画が異なることを発見しました

ここに画像の説明を入力

4

2 に答える 2

1

私のマシンではこれを再現できませんが、これは設計によるものであり、エラーがフィルタリングされていると思われますWHERE KEY_TBL.RANK > 2

トピック検索クエリ結果のランク付け (全文検索) には、次のように記載されています。

このランク値はすべての行で計算され、特定のクエリの結果セットを関連性で並べ替えるための順序付け基準として使用できます。ランク値は、結果セット内の行の関連性の相対的な順序のみを示します。実際の値は重要ではなく、通常、クエリが実行されるたびに異なります。ランク値は、クエリ全体で意味を持ちません。

FLOOR(20% * RANK)2 番目のクエリでは、すべての値が最初のクエリから縮小されているようです。これは相対スケール フィルタリングにすぎないため、絶対RANK値でフィルタリングすると、一致する行が結果に任意に出入りするというこの種の問題が発生する可能性があります。

于 2013-05-27T23:26:46.347 に答える