Обновить индекс полнотекстового поиска

2

в SQL Server 2008 при настройке полнотекстового поиска он дает мне возможность выбрать время/день для повторного заполнения индекса, могу ли я сделать это из кода вместо кода С#? если да, то как мне это сделать? Мне нужно выполнить SQL-код с С# для обновления индекса?

Кроме того, скажем, если я НЕ ДОЛЖЕН повторно заполнить индекс и добавить некоторые новые записи, с помощью запроса FTS появятся новые записи? Но медленнее? Или они вообще не появятся, если я не вернусь?

Теги:
sql-server-2008
full-text-search

1 ответ

6

Изменить: будьте осторожны, есть два способа поддержания тока индекса FT:

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

Первый метод +/- прозрачен для продолжения обслуживания для пользователей базового каталога, последний подразумевает частичную потерю обслуживания, в то время как индекс репокупируется (хотя, возможно, не в 2008 году?)

Немного неясно, к какому типу обновления или перенаселения относится этот вопрос, поэтому ответы ниже являются общими.

1) Да! Полнотекстовое переназначение индексов (или обновление) может выполняться программно с использованием простого запроса TSQL, который выглядит следующим образом. Такие запросы можно вызвать из кода С#, используя OLEDB или даже ODBC.

ALTER FULLTEXT INDEX ON myCatalog START START FULL POPULATION;    -- for full (re-)population
ALTER FULLTEXT INDEX ON myCatalog START UPDATE POPULATION;    -- for update

2) Да, индекс FTS будет отражать изменения в базе данных, в непосредственной близости от реального времени, при условии, что он настроен соответствующим образом. Вам нужно установить индекс FT для "отслеживания изменений", чтобы он мог поддерживать индексный ток. Это необходимое условие. Со списком измененных и новых записей в файле (из отслеживания изменений) SQL может либо обновить индекс FT "на лету" (сохраняя этот индекс немного ниже реального времени, обновления в базе данных, задержка связана с тем, что обновления к индексу FT бит буферизуется, а также потому, что этот тип обновления обычно является низким приоритетом в отношении использования ЦП на сервере), или это можно сделать "вручную" (вручную в кавычках, потому что "явно" может быть больше Соответственно, такие обновления вручную могут быть запланированы и, следовательно, "автоматически".)

Подробнее см. техническая статья Microsoft. (Также проверьте ссылки внизу этой статьи для обзора индексов FT и т.д.)

  • 0
    ALTER FULLTEXT INDEX должен быть выполнен для индексированной таблицы (не для каталога), а полное повторное заполнение содержит опечатку START START . Примеры из указанной статьи выглядят следующим образом: Пример - Запуск полной совокупности для ALTER FULLTEXT INDEX ON Production.Document START FULL POPULATION; Пример - Запустить ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION; вручную ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню