sql-server - FREETEXT 搜索 - 根据匹配程度对结果进行排序

标签 sql-server sql-server-2008 full-text-search

我正在尝试实现全文搜索。我正在使用 FREETEXT 并且得到了正确的结果。问题在于结果的排序。如果尝试搜索“ parking 场”,则匹配这两个词的结果应该位于开头,然后是仅匹配其中一个词的结果。我怎样才能做到这一点?

谢谢

最佳答案

使用 FREETEXTTABLE 而不是 FREETEXT。

FREETEXTTABLE 将返回包含排名信息的键表。您可以对此排名信息进行排序,以查找最接近匹配的项目。

Microsoft FREETEXTTABLE documentation

以下示例展示了其工作原理:

SELECT
    t.TableID
    , t.TextData
    , ft.Rank
FROM
    Table t
    INNER JOIN FREETEXTTABLE ( Table , * , 'car park' ) ft ON ( t.TableID = ft.[Key] )
ORDER BY
    ft.Rank DESC

关于sql-server - FREETEXT 搜索 - 根据匹配程度对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6686171/

相关文章:

sql - 如何避免隐式类型转换

SQL 一个值属于集合

sql - 根据连接的值将连接结果添加为新列

sql - 使用 PowerShell 在 SQL Server DB 中插入字符串值。

sql-server - 加密文件流数据

sql-server - 如何通过计费 API 查找 Azure 使用记录中的唯一性

sql - 使用 sql 选择的值作为另一个选择的行名

php - 为什么 MATCH against 的效果不如 Exact match?

MySQL - min_word_length 2 或 3 - 需要计数

mysql - Mysql如何对汉字进行全文搜索?