top_n_rank全文搜索问题

时间:2012-08-31 06:27:04

标签: sql sql-server sql-server-2008 full-text-search ranking-functions

这是全文搜索的top_n_by_rank参数。

我有一个查询,假设:

SELECT *
FROM Publisher p 
INNER JOIN FREETEXTTABLE(Publisher, Name, @searchText, 100) PublisherSearch
           ON  p.Id = PublisherSearch.[Key]
ORDER BY PublisherSearch.[Rank]

在这里,我给了top_n_by_rank = 100。 这应该给我排名第100的记录。 但我只得到61条记录。 当我删除top_n_rank param时,它会给我超过1000条记录。

我的问题是,top_n_by_rank参数是否仅搜索前100条记录或 它是否搜索所有记录并仅获得前100个搜索结果?

1 个答案:

答案 0 :(得分:0)

您实际问题的答案:

  

top_n_by_rank参数仅搜索前100条记录,或者搜索所有记录并仅获取前100条搜索结果。

是:top_n_by_rank应告诉SQL Server检查所有记录,并在结果中仅选择最匹配的top_n_by_rank个数。

它不像普通的SELECT TOP * FROM table,它关注记录的匹配等级。

以下是关于FREETEXTTABLE的MSDN文档:

  

TOP_N_BY_RANK
  指定仅返回按降序排列的最高排名匹配。仅在指定整数值n时适用。如果top_n_by_rank与其他参数组合,则查询可以返回的行数少于实际匹配所有谓词的行数。 top_n_by_rank允许您通过仅调用最相关的匹配来提高查询性能。