2010-06-10 49 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;