sql-server - 对几个字符串的全文搜索结果进行排序

标签 sql-server tsql full-text-search sql-server-2014

我从前端获取一些字符串,我想在全文索引 View 中找到尽可能多的匹配这些字符串的所有条目。示例字符串将是:

Bla di bladi

这可以翻译成这个查询:
SELECT 
    *
FROM [Schema].[SomeFullTextIndexedView] 
WHERE CONTAINS (*, '"*bla*" OR "*di*" OR "*bladi*"')

这工作正常。让我们说为了论证,查询返回这些结果:
Column1 Column2 Column3
bla  rte     
bla di   xxx
bladi    tttytyt     
bla di  bladi

我还想做的是引入某种等级,其中匹配的字符串越多,等级越大。然后使用排名对结果进行降序排序:
Column1 Column2 Column3 Rank
bla di  bladi   3
bla di   xxx    2
bla  rte        1
bladi    tttytyt     

1

全文搜索中有什么我可以利用的吗?谢谢。

最佳答案

通常,您可以使用 FREETEXTTABLE 返回 RANK 列:

SELECT 
    *
FROM [Schema].[SomeFullTextIndexedView]  AS t 
INNER JOIN FREETEXTTABLE([Schema].[SomeFullTextIndexedView] , *, '"*bla*" OR "*di*" OR "*bladi*"') as k ON t.Id = k.[key]
ORDER BY k.[RANK] DESC

但是在您的示例中,文本字符串与 always returns 0 无关。用真实数据试试。

关于sql-server - 对几个字符串的全文搜索结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076685/

相关文章:

sql - 触发删除有两个条件

c# - TSQL BULK INSERT 行错误导致 C# 异常

sql - T-SQL 根据单个即将到来的日期和续订期限生成续订日期列表

postgresql 全文搜索函数语法

php - 按首字母排序sql查询

sql-server - 如何为每个 ID 选择第 n 行?

sql - Microsoft SQL Server Native Client 10.0 登录超时已过期

sql - 如何强制 MERGE 语句与 DELETE 使用索引查找?

sql - TSQL - 一些 |为什么它们相同但名称不同?

mongodb - Mongoose 全文搜索嵌套文档并填充选项