如何在SQL Server全文搜索中为列分配不同的权重?

时间:2010-06-10 18:42:20

标签: sql full-text-search ranking

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

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

2 个答案:

答案 0 :(得分:1)

您可以单独使用每列上的FREETEXTTABLE函数,然后将权重分配给返回的Rank列。我相信我在某个地方读到了Rank列不一定适用于搜索之间的比较,因此您可能需要进行试验以确保获得准确的结果。

答案 1 :(得分:0)

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;