SQL Server 2012 を実行し、800K 行のテーブルに FTS インデックスを適用しました。テーブルには、行の任意のデータが入力されました。私は皮肉を使ってユーザー定義テキストを解析し、次のテキストを検索します」
Zaphod gave him
次のSQLを実行してから、データベースにあることがわかっています
declare @searchterm nvarchar(max) = '%Zaphod gave him%'
select fact.id,<MyColumns>
from [dbo].[fact] as fact
where MyColumnAName like @searchterm or
MyColumnBName like @searchterm
....
Irony エンジンは次のステートメントを生成します。
(( FORMSOF (INFLECTIONAL, Zaphod) AND
FORMSOF (INFLECTIONAL, gave) ) AND
FORMSOF (INFLECTIONAL, him) )
そしてそれをSQLに追加します
SELECT fact.id, KEY_TBL.RANK, <MyColumns>
FROM [dbo].[Fact] as fact
INNER JOIN FREETEXTTABLE(fact,*, '(( FORMSOF (INFLECTIONAL, Zaphod) AND
FORMSOF (INFLECTIONAL, gave) ) AND
FORMSOF (INFLECTIONAL, him) )') AS KEY_TBL
ON fact.ID = KEY_TBL.[KEY]
ORDER BY RANK DESC
正確なテキストを 2 回含む 1 つの行 (2 つの異なる行) は、この正確な数値を 1 回含む多くの行の後に配置されます。
それらはすべて同じランクになります。
この行を結果セットの前に設定できますか?
ランクが十分に正確ではないため、そのようにソートされていますか?
ありがとう。