我正在使用SQL Server 2008 FTS,我希望能够将加权排名整合到我的搜索结果中。不过,我想对搜索字词的列进行不同的加权。例如,如果我有一个标题列和一个描述列,我想让标题中的匹配比匹配的描述更高。如何为SQL Server全文搜索中的列分配不同的权重?
这在SQL Server 2008中可能吗?据我所见,我只能给特定的条款添加权重,而不是列位置。
我正在使用SQL Server 2008 FTS,我希望能够将加权排名整合到我的搜索结果中。不过,我想对搜索字词的列进行不同的加权。例如,如果我有一个标题列和一个描述列,我想让标题中的匹配比匹配的描述更高。如何为SQL Server全文搜索中的列分配不同的权重?
这在SQL Server 2008中可能吗?据我所见,我只能给特定的条款添加权重,而不是列位置。
您可以独立使用每列上的FREETEXTTABLE函数,然后将您的权重分配给返回的Rank列。不过,我相信我在某处阅读,但排名栏不一定适用于跨搜索的比较,所以您可能需要进行试验以确保您获得准确的结果。
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;
谢谢,这正是我所害怕的。 – gcaprio 2010-06-10 21:42:41