2009-11-05 4 views
2

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

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

ответ

6

Edit: берегитесь, что есть два способа поддержания индекса FT тока:

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

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

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

1) Да! Полнотекстовое переназначение индекса (или обновление) можно выполнить программно, используя простой TSQL-запрос, который выглядит следующим образом. Такие запросы можно вызвать из кода C#, используя 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 technet article для получения дополнительной информации. (Также проверьте ссылки внизу этой статьи для обзора индексов FT и т. Д.)

Смежные вопросы