我从前端获取一些字符串,我想在全文索引 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/