Индексация полнотекстового поиска только по определенным строкам - PullRequest
2 голосов
/ 21 ноября 2010

У меня есть две таблицы, документы и редакции. Документы имеют два столбца: идентификатор документа и заголовок, а редакции имеют 3 столбца: идентификатор документа, идентификатор редакции, тело.

Когда я выполняю полнотекстовый поиск по столбцу body таблицы ревизий, я бы хотел запросить только последнюю версию. Есть ли способ указать SQL Server индексировать только строки для последней редакции документа?

1 Ответ

2 голосов
/ 21 ноября 2010

Afaik, нет способа индексировать только записи с определенным идентификатором, но вы можете добавить в запрос последний идентификатор редакции.

Это можно сделать, добавив:

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 к документу. Таким образом, каждый документ имеет одну индексированную ревизию, а остальные хранятся только для резервного копирования. Это особенно полезно, если в ваших документах много ревизий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...