2010-06-10 51 views
0

我正在使用SQL Server 2008 FTS,我希望能够将加权排名整合到我的搜索结果中。不过,我想对搜索字词的列进行不同的加权。例如,如果我有一个标题列和一个描述列,我想让标题中的匹配比匹配的描述更高。如何为SQL Server全文搜索中的列分配不同的权重?

这在SQL Server 2008中可能吗?据我所见,我只能给特定的条款添加权重,而不是列位置。

回答

1

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

+0

谢谢,这正是我所害怕的。 – gcaprio 2010-06-10 21:42:41

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;