我运行 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
现在,具有两次确切文本的一行 - 在两个不同的行中位于具有该确切数字一次的许多行之后。
他们都获得相同的排名。
我可以在结果集中更早地设置这一行吗?
这样排序是不是因为排名不够精确?
谢谢。