仅对某些行进行全文搜索索引

时间:2010-11-21 14:39:40

标签: sql sql-server sql-server-2008

我有两张表,文件和修订版。文档有两列:文档ID和标题,修订版有3列:文档ID,修订版ID,正文。

当我对修订表的body列执行全文搜索时,我只想查询最新版本。有没有办法告诉SQL Server只对文档的最新版本的行进行索引?

1 个答案:

答案 0 :(得分: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关系的表中。这样,每个文档都有一个索引修订版,而其他文档只存储用于备份。如果您的文档有很多修订版,这将特别有用。