1

有一个存储过程在两个表上使用 FREETEXTTABLE 两次,然后合并结果并返回前 50 个。

问题是,如果我对“布鲁斯特的女性”进行搜索,结果返回“前杜夫斯莫塔的忏悔”,排名为 A 143,第二个“布鲁斯特女性”排名为 102,来自表 B .

这是因为计数吗?(表 A 返回结果总数为 2399。表 B 返回结果总数为 3445。)

4

3 回答 3

4

简短的回答:

自由文本排名基于 OKAPI BM25 排名公式。对查询中的每个词进行排名,并对值求和。自由文本查询将通过屈折生成(原始查询词的词干形式)将单词添加到查询中;这些单词被视为单独的术语,与生成它们的单词没有特殊的权重或关系。从同义词库功能生成的同义词被视为单独的、同等权重的术语。

当然,可以在 Microsoft 的网站上找到更长、更复杂的答案。对于高等数学,请单击此处

于 2008-10-16T21:29:39.127 回答
1

1) 噪声文件被限制为几个字符,这意味着“of”这个词现在被认为很重要。

2)这两个表的结果(计数)确实很重要,因为较小的表很可能会被赋予更好的权重值。这将使排名在较小的表中更高。

Josef 与 MSDN 的链接非常适合弄清楚它如何计算排名值。

于 2008-10-20T17:59:48.283 回答
0
USE AdventureWorks2012;  
GO  
  
SELECT FT_TBL.Description  
    ,KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL   
    INNER JOIN FREETEXTTABLE(Production.ProductDescription,  
    Description,   
    'high level of performance') AS KEY_TBL  
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY RANK DESC;  
GO  

使用此 INNER JOIN 方法按排序顺序获取相关结果。参考:Azure SQL FREETEXABLE

于 2021-06-10T06:45:47.237 回答