в SQL Server 2008 при настройке полнотекстового поиска он дает мне возможность выбрать время/день для повторного заполнения индекса, могу ли я сделать это из кода вместо кода С#? если да, то как мне это сделать? Мне нужно выполнить SQL-код с С# для обновления индекса?
Кроме того, скажем, если я НЕ ДОЛЖЕН повторно заполнить индекс и добавить некоторые новые записи, с помощью запроса FTS появятся новые записи? Но медленнее? Или они вообще не появятся, если я не вернусь?
Изменить: будьте осторожны, есть два способа поддержания тока индекса 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 и т.д.)
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;