b5ab525c

Общие понятия


Организация полнотекстового поиска в Microsoft SQL Server состоит из нескольких этапов.

Прежде всего, для таблиц базы нужно создать полнотекстовый каталог (full-text catalog). Под полнотекстовым каталогом в Microsoft SQL подразумевается специализированный индекс, в котором хранится информация обо всех появлениях слов и словосочетаний в записях базы. Нужно отметить, что этот индекс принципиально отличается от обычных индексов SQL. Во-первых, полнотекстовый каталог может быть построен только по полям текстового типа, т.е. только для полей типа char, varchar, text, (image – только для Microsoft SQL Server 2000, для поиска по документам) и их Unicode-аналогов: nchar, nvarchar и ntext. Во-вторых, в отличие от индексов SQL, полнотекстовый каталог хранится отдельно от файлов базы данных в отдельном каталоге[1]. Далее, в полнотекстовом каталоге может храниться информация о текстовых записях сразу нескольких таблиц базы. Наконец, последнее важное отличие полнотекстовых каталогов от обычных SQL-индексов. При изменении содержимого в базе данных SQL-индексы таблиц перестраиваются автоматически и, таким образом, всегда отражают состояние заиндексированных полей базы. Обновление же полнотекстовых каталогов производится по расписанию, т.е. независимо от изменений в базе. Таким образом, полнотекстовый каталог отражает состояние базы на момент последнего индексирования. В Microsoft SQL Server 2000 существует специальная опция “Change Tracking”, позволяющая синхронизировать полнотекстовый индекс с данными в таблицах при изменении последних. Более подробно – см. документацию по Microsoft SQL Server 2000.

После того, как будет создан полнотекстовый каталог, необходимо провести индексирование записей в базе. В документации Microsoft эта процедуру называют population. На этом этапе полнотекстовая поисковая система извлекает из записей базы данных текстовые поля. Затем выделенные фрагменты текста разбиваются на отдельные слова и вместе с информацией о том, где именно встретилось это слово, сохраняется в полнотекстовом каталоге. Различают полное и инкрементальное индексирование. При полном индексировании в каталоге сохраняется информация обо всех записях всех таблиц, хранящихся в данном полнотекстовом каталоге. Если объем данных велик, то полное индексирование такой базы может потребовать значительного времени. В случае, когда изменяется относительно небольшой объем данных, для экономии времени применяют инкрементальное индексирование. В этом режиме будут обработаны только те записи баз, которые были изменены (обновлены, добавлены или удалены) с момента последней индексации.

После того, как текстовые данные будут заиндексированы, можно осуществлять полнотекстовый поиск по полям базы.

Дополнительная информация о методике использования полнотекстового поиска находится в следующем разделе Books Online: Creating and Maintaining Databases / Full-text Indexes.



Содержание раздела