【问题标题】:How do I assign different weights to columns in SQL Server Full Text Search?如何为 SQL Server 全文搜索中的列分配不同的权重?
【发布时间】:2010-06-10 18:42:20
【问题描述】:

我正在使用 SQL Server 2008 FTS,我希望能够将加权排名集成到我的搜索结果中。但是,我想对在不同的搜索词中找到的列进行加权。例如,如果我有一个 Title 列和一个 Description 列,我希望 Title 中的匹配项排名高于 Description 中的匹配项。

这在 SQL Server 2008 中是否可行?据我所知,我只能为特定术语添加权重,而不是列位置。

【问题讨论】:

    标签: sql full-text-search ranking


    【解决方案1】:

    您可以对每一列单独使用FREETEXTTABLE 函数,然后将您的权重分配给返回的排名列。我相信我在某处读到过,虽然排名列不一定适用于跨搜索的比较,但您可能需要进行试验以确保获得准确的结果。

    【讨论】:

    • 谢谢,这就是我害怕的。
    【解决方案2】:
    SELECT title, filename, sum(relevance)
    FROM (
        SELECT title, filename, 10 AS relevance FROM page WHERE title like ‘%about%’
        UNION
        SELECT title, filename, 7 AS relevance FROM page WHERE filename like ‘%about%’
        UNION
        SELECT title, filename, 5 AS relevance FROM page WHERE keywords like ‘%about%’
        UNION
        SELECT title, filename, 2 AS relevance FROM page WHERE description like ‘%about%’
    ) results
    GROUP BY title, filename
    ORDER BY relevance desc; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 2015-06-15
      • 1970-01-01
      相关资源
      最近更新 更多