首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FREETEXTTABLE为什么或如何给出比其他值更高的排名值

FREETEXTTABLE为什么或如何给出比其他值更高的排名值
EN

Stack Overflow用户
提问于 2008-10-16 20:11:07
回答 3查看 6.9K关注 0票数 1

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

问题是,如果我搜索“女人的布鲁斯特”,结果返回“一个前笨蛋莫塔的告白”,从表A排名143,从表B返回排名第二的“布鲁斯特的女人”,排名102。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-10-16 21:29:39

简短的回答是:

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

当然,更长、更复杂的答案可以在微软的网站上找到。对于高等数学,click here

票数 4
EN

Stack Overflow用户

发布于 2008-10-20 17:59:48

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

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

Josef到MSDN的链接在计算排名值方面做得很好。

票数 1
EN

Stack Overflow用户

发布于 2021-06-10 14:45:47

代码语言:javascript
复制
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  

使用这种内部联接方法可以按排序顺序获得相关结果。参考:Azure SQL FREETEXABLE

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/210094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档