为什么或如何使FREETEXTTABLE给出比其他人更高的等级值
-
03-07-2019 - |
题
有一个存储过程在两个表上使用FREETEXTTABLE两次,然后合并结果并返回前50个。
问题是,如果我搜索“布鲁斯特妇女”,结果会返回“前任的忏悔之声”。表A中排名143,第二名“Brewster Place女性”排名第一。表B中的等级为102。
这是因为伯爵? (表A返回结果总计为2399.表B返回结果总计为3445.)
解决方案
答案简短:
Freetext排名基于OKAPI BM25排名公式。每个词都在 查询排名,值是 求和。 Freetext查询将添加 通过屈折来查询的单词 一代(词干的形式) 原始查询条款);这些话是 作为单独的条款处理,没有 特殊的权重或与...的关系 他们所说的话 产生。从中生成的同义词 同义词库功能被视为 单独的,同等加权的术语。
当然,可以在微软的网站上找到更长,更复杂的答案。对于高等数学,请点击此处。
其他提示
1)噪音文件仅限于几个字符,这意味着“of of”一词。现在认为重要。
2)两个表的结果(计数)确实很重要,因为较小的表最有可能被赋予更好的权重值。这会使得较小的表中的等级偏高。
Josef与MSDN的链接很好地解决了它如何计算排名值。
不隶属于 StackOverflow