我正在使用SQL Server 2008 FTS,我希望能够将加权排名整合到我的搜索结果中。但是,我想对以不同方式找到搜索词的列进行加权。例如,如果我有一个Title列和一个Description列,我希望Title中的匹配排名高于Description中的匹配。
这在SQL Server 2008中是否可行?据我所知,我只能为特定术语而不是列位置添加权重。
答案 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;