2010-11-21 102 views
2

我有兩個表格,文檔和修訂版。文檔有兩列:文檔ID和標題,修訂有三列:文檔ID,修訂ID,正文。僅在特定行上進行全文搜索索引

當我對修訂表的正文欄執行全文搜索時,我只想查詢最新版本。有沒有辦法告訴SQL Server只對行的最新版本的文檔進行索引?

回答

2

Afaik,沒有辦法只索引具有特定ID的記錄,但可以將最新版本ID添加到您的查詢中。

,可以像加來完成:

SELECT 
    * 
FROM 
    revisions r 
WHERE 
    /* Your r.body condition AND */ 
    r.revisionId = 
    (SELECT 
     MAX(mr.revisionId) 
    FROM 
     revisions mr 
    WHERE mr.documentid = r.documentid) 

如果你總是隻需要指數的最新版本,它可能是更好的選擇那個版本的機身添加到文件表或有另一個表與文件1:1的關係。這樣,每個文檔都有一個索引版本,而其他文檔僅用於備份。如果您的文檔有很多修訂,這是特別有用的。

+0

謝謝!我覺得非常骯髒,通過所有修訂搜索並拋出其他修訂的結果(更不用說,不知道很多關於算法,它似乎可能扭曲整體排名結果),所以我想暫時我會存儲最新文檔表中的修訂,所以修訂表存在更多的檔案。 – inolen 2010-11-21 21:31:30