天道酬勤,学无止境

freetexttable

为什么或如何 FREETEXTTABLE 给出的排名值高于其他值(Why or How does FREETEXTTABLE give a rank value higher than others)

问题 有一个存储过程在两个表上使用 FREETEXTTABLE 两次,然后合并结果并返回前 50 个。 问题是,如果我搜索“布鲁斯特的女人”,结果会返回“自白”,表 A 中的排名为 143,而第二个“布鲁斯特的女人”,表 B 中的排名为 102 . 这是计数的原因吗? (表 A 返回结果总数为 2399。表 B 返回结果总数为 3445。) 回答1 简短的回答: 自由文本排名基于 OKAPI BM25 排名公式。 对查询中的每个术语进行排名,并对值求和。 自由文本查询将通过屈折生成(原始查询词的词干形式)向查询添加单词; 这些词被视为单独的词,与生成它们的词没有特殊的权重或关系。 从同义词库功能生成的同义词被视为单独的、权重相等的术语。 当然,可以在 Microsoft 的网站上找到更长、更复杂的答案。 对于高级数学,请单击此处。 回答2 1) 噪音文件仅限于几个字符,这意味着“of”这个词现在被认为很重要。 2)两个表的结果(计数)确实很重要,因为较小的表很可能会获得更好的权重值。 这会使较小的表中的排名偏高。 Josef 的 MSDN 链接非常适合弄清楚它是如何计算排名值的。

2021-06-11 09:23:09    分类:技术分享    sql-server   sql-server-2005   tsql   freetext   freetexttable

FREETEXTTABLE的等级始终为0(FREETEXTTABLE always has a rank of 0)

问题 我正在使用SQLServer 2008,并且如果执行以下查询: SELECT * FROM FREETEXTTABLE(SomeTable, Name, 'a name that I know exists') 我得到了我希望的行,但等级始终为0。 在寻找此问题的解决方案时,我在Microsoft ASP.NET论坛上找到了这个问题,并且确定添加以下内容是否足够: ALTER FULLTEXT CATALOG MyCatalog REBUILD 我开始获得排名-但只是暂时的。 我不想每次搜索时都必须重建目录,特别是当数据库中有很多数据并且如果在查询之前将其直接添加到Sproc时,无论如何我的查询都不会返回任何结果,大概是因为目录已完成重建。 似乎还有其他人有这个问题和类似的问题,但是我一直找不到解决方案。 有任何想法吗? 回答1 排名是相对于查询中返回的其他结果而言的,因此仅对根据返回值进行相关性排序有用。 有有关排名方法的详细信息。 回答2 我在同一期中遇到问题,当前接受的答案对我来说不是解决方案。 是的,已经按照此答案进行了排名,但是自从上次目录重建以来已经有一段时间了,这绝对不是导致结果不一致的原因。 重建时排名应该不会有太大变化,重建后几分钟甚至更短的时间... 对我来说, freetexttable排名中有一个错误。 (不影响containstable排名的错误

2021-06-01 17:00:10    分类:技术分享    tsql   sql-server-2008   full-text-search   freetexttable

Why or How does FREETEXTTABLE give a rank value higher than others

There is a store procedure that uses FREETEXTTABLE twice on two tables and then merges the results and returns the top 50. The problem is if I do a search on "Women of Brewster", the results returns "Confession of an ex doofus motha" with a rank of 143 from table A and second "Women of Brewster Place" with a rank of 102 from table B. Is this because of the count? (Table A return results total is 2399. Table B return results total is 3445.)

2021-05-12 15:47:00    分类:问答    sql-server   sql-server-2005   tsql   freetext   freetexttable

FREETEXTTABLE always has a rank of 0

I'm using SQLServer 2008 and if I perform the following query: SELECT * FROM FREETEXTTABLE(SomeTable, Name, 'a name that I know exists') I get the rows back that I would expect, but the rank is always 0. Searching for a solution to this problem, I found this question on the Microsoft ASP.NET forum, and sure enough if I add: ALTER FULLTEXT CATALOG MyCatalog REBUILD I start to get a rank - but only temporarily. I don't want to have to rebuild my catalog every time I do a search especially when I have lots of data in my database and if I add it to my Sproc directly before the query, my query

2021-04-29 16:41:06    分类:问答    tsql   sql-server-2008   full-text-search   freetexttable