SQL Server同样支持在查询的FROM子句中使用排名函数。排名函数CONTAINSTABLE和FREETEXTTABLE不返回符合搜索条件的行,它们用来根据相关性返回指定的行。越是接近匹配,系统就给予越高的排名。
FREETEXTTABLE能根据搜索字符串按照排名的次序返回搜索结果。
FREETEXTTABLE (table , { column_name | (column_list) | * }
, 'freetext_string'
[ , LANGUAGE language_term ]
[ , top_n_by_rank ] )
FREETEXTTABLE函数的table参数是包含全文索引的一列或者多列的表名。如果指定top_n_by_rank参数,则它会有一个整数值,表示按照排名的最高几个匹配。
根据与搜索项接近程度的高低从Production.Document表返回搜索bicycle seat的行:
USE AdventureWorks
GO
SELECT f.RANK,DocumentID,DocumentSummary
FROM Production.Document d
INNER JOIN FREETEXTTABLE(Production.Document,DocumentSummary,'bicycle seat') f
ON d.Document=f.[KEY]
ORDER BY RANK DESC