我正在使用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