Полнотекстовый индекс не обновляется (SQL 2005) - PullRequest
3 голосов
/ 17 февраля 2009

У меня есть таблица, которая отлично выполняла полнотекстовый поиск до прошлой недели. Существует более семи миллионов записей, и я вижу, что в полнотекстовом индексе содержится более семи миллионов записей.

Но ничего более недавнего, чем неделя, не появляется в результатах поиска. В свойствах полнотекстового индекса таблицы видно, что число «ожидающих» записей (возможно, сегодня составляет 30 тысяч), вероятно, соответствует материалам, которые он не добавил в индекс.

Первое, что я проверил, было ли индекс включен. Это было не так, поэтому я включил его, и процесс, который запустил задание «ALTER FULLTEXT INDEX», начал блокировать все остальные запросы на сервере, поэтому я его убил.

Я подтвердил, что служба полнотекстового индексирования работает и запускается автоматически. Я также подтвердил, что он автоматически проверяет изменения, хотя переключение с «Автоматически» на «Ручной» на «Выкл», похоже, мало что делает, кроме сброса количества результатов в очереди. (Возвращение к «Автоматически» сбрасывает число до 30 000.)

Я пытался перестроить полнотекстовый индекс, но для «Полный» и «Инкрементный» он возвращает сообщение о том, что «индекс уже существует». «Обновить» говорит «команда выполнена успешно», но, похоже, не имеет никакого эффекта.

Последнее, что я сделал сегодня, было:

  1. отключить полнотекстовый индекс
  2. перестроить кластерный индекс, на котором основан FTI,
  3. повторно включить FTI

Это запустило задание «ALTER FULLTEXT INDEX», которое снова заблокировало все процессы, выполняющие реальную работу.

Мы пытаемся сделать выбор между вариантом A: очистка существующего FTI и восстановление с нуля, и вариантом B: выполнение трюка с отключением / перестроением / повторным включением, который, кажется, запускает что-то полезное. (Мы бы сделали B, затем A, но мы ожидаем один или два часа простоя для любого из них, и A работал в прошлом.)

Есть ли более быстрый способ сделать это? И есть идеи, как я попал в эту ситуацию в первую очередь?

Ответы [ 2 ]

2 голосов
/ 18 февраля 2009

Это интересная проблема. Думаю, ты ввязался в это, потому что он был отключен. Возможно, я нашел способ вытащить тебя из этого, не блокируя все остальное.

Во-первых, знайте, что это поведение является ошибкой в ​​SQL Server 2005 с пакетом обновления 1 (SP1), убедитесь, что у вас установлен SP1.

Если вы уже это сделали, попробуйте:

Изменить указатель полного текста на имя таблицы

ИЗМЕНЕНИЕ ИНДЕКСА ПОЛНОГО ТЕКСТА НА ИМЯ таблицы НАЧАТЬ ОБНОВЛЕНИЕ НАСЕЛЕНИЯ

Если это сработает, то я думаю, что вы столкнулись с той же проблемой, что и этот парень. Он просто назначил работу каждый час или около того. Конечно, это временное решение, но оно даст вам время, пока вы действительно не сможете перестроить индекс.

Что-то еще, что только что пришло в голову, вы пробовали РЕОРГАНИЗОВАТЬ индекс? Я знаю, что это не блокирует, но я не уверен, что это приведет к тому, что сброс будет происходить таким образом, чтобы он тоже не блокировался.

0 голосов
/ 19 февраля 2009

Просто чтобы уточнить, что вы проверили, что раздел, на котором создан индекс, имеет место. Мы столкнулись с этой проблемой в нашей среде DEV, где полнотекстовый индекс не обновлялся.

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