У меня есть таблица, которая отлично выполняла полнотекстовый поиск до прошлой недели. Существует более семи миллионов записей, и я вижу, что в полнотекстовом индексе содержится более семи миллионов записей.
Но ничего более недавнего, чем неделя, не появляется в результатах поиска. В свойствах полнотекстового индекса таблицы видно, что число «ожидающих» записей (возможно, сегодня составляет 30 тысяч), вероятно, соответствует материалам, которые он не добавил в индекс.
Первое, что я проверил, было ли индекс включен. Это было не так, поэтому я включил его, и процесс, который запустил задание «ALTER FULLTEXT INDEX», начал блокировать все остальные запросы на сервере, поэтому я его убил.
Я подтвердил, что служба полнотекстового индексирования работает и запускается автоматически. Я также подтвердил, что он автоматически проверяет изменения, хотя переключение с «Автоматически» на «Ручной» на «Выкл», похоже, мало что делает, кроме сброса количества результатов в очереди. (Возвращение к «Автоматически» сбрасывает число до 30 000.)
Я пытался перестроить полнотекстовый индекс, но для «Полный» и «Инкрементный» он возвращает сообщение о том, что «индекс уже существует». «Обновить» говорит «команда выполнена успешно», но, похоже, не имеет никакого эффекта.
Последнее, что я сделал сегодня, было:
- отключить полнотекстовый индекс
- перестроить кластерный индекс, на котором основан FTI,
- повторно включить FTI
Это запустило задание «ALTER FULLTEXT INDEX», которое снова заблокировало все процессы, выполняющие реальную работу.
Мы пытаемся сделать выбор между вариантом A: очистка существующего FTI и восстановление с нуля, и вариантом B: выполнение трюка с отключением / перестроением / повторным включением, который, кажется, запускает что-то полезное. (Мы бы сделали B, затем A, но мы ожидаем один или два часа простоя для любого из них, и A работал в прошлом.)
Есть ли более быстрый способ сделать это? И есть идеи, как я попал в эту ситуацию в первую очередь?