【问题标题】:Multiple Full Text Search SQL Queries Merged and Scored (Ranked Search Results)合并和评分的多个全文搜索 SQL 查询(排名搜索结果)
【发布时间】:2016-06-20 10:39:48
【问题描述】:

我在一个表中有一堆文章,我想查询搜索结果。使用全文搜索,我可以返回搜索关键字彼此“接近”的项目列表。

全文搜索似乎不允许带有 NEAR 分隔符的词库 (FORMSOF)。

在 SQL 中,我想做的是创建一个查询或多个查询,它们以不同的方式搜索相同的数据,并返回一个分数(如果使用全文搜索,则返回一个 RANK),然后我想合并这些结果,以免重复,并将排名/分数加起来,以便我可以按这些分数排序。

补充一下,我还想搜索一个单独的链接表,其中包含文档已分配的“标签”,并为具有相应标签的人分配额外的分数。

满足这些要求的最佳实践方式是什么?

【问题讨论】:

    标签: sql-server full-text-search


    【解决方案1】:

    全文搜索可以在CONTAINSTABLE语句中进行类似('"word*" near "another*"')的搜索。星号将有助于搜索以'word''another' 开头的任何单词,并且排名靠前。

    另一方面,您可以使用CONTAINSTABLE 语句启动FORMSOF(Thesaurus, word) AND FORMSOF(Thesaurus, another) 搜索。

    然后合并结果并使用 ORDER BY 按两个给定的 RANK 排序。

    【讨论】:

    • 感谢您的信息。我被困了一段时间,但意识到我可以为不同的搜索结果编写特定的查询,例如“另一个”附近的“单词”的一组结果,然后通过执行嵌套查询来实现 formsof(thesaurus, word)是 UNION'd,然后按结果分组并 SUM'ing 总排名。它可能不是最优雅的解决方案,但它具有可扩展性且运行迅速。
    • 我的荣幸!如果对您有帮助,那就太好了,您找到解决方案也太好了!
    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2020-10-04
    相关资源
    最近更新 更多