SQL Server 2000. Руководство для ознакомления с продуктом

       

Полнотекстовый поиск


Очень большая часть сохраняемой в электронной форме информации находится в виде неструктурированных текстовых данных– обычных текстовых файлах и форматированных документах. Хотя основная масса этих текстовых данных хранится в файловых системах, многие организации сейчас хранят их в реляционных базах данных. Благодаря этому появляется возможность широко пользоваться преимуществами баз данных, включая быстрый доступ, возможности запросов, простые прикладные интерфейсы конечных пользователей и безопасный удаленный доступ. К сожалению, большинство производителей баз данных требуют дополнительной платы за средства текстового поиска, что ограничивает его применение. Некоторые пользователи для удовлетворения своих потребностей вынуждены приобретать дорогостоящие продукты сторонних производителей. Эти решения обычно связаны с извлечением данных из базы через мосты или шлюзы и сохранения их в файловой системе в виде файлов, что позволяет применять текстовое индексирование. Такой примитивный метод исключает возможность непосредственного объединения текстового запроса с обычным структурированным реляционным запросом. Включенное в SQL Server 7.0 средство полнотекстового поиска позволяет разработчикам использовать и управлять структурированными и неструкту­рированными данными единым образом.

SQL Server 2000 расширяет интегрированные возможности полнотекстового поиска, представленные в сервере SQL Server 7.0, позволяя пользователям выполнять поиск по тексту, хранящемуся в базе данных даже в том случае, когда текст содержится в форматированном документе. Полнотекстовый поиск является базовой функциональной возможностью сервера SQL Server 2000 и входит в стандартный вариант установки SQL Server; пользователям больше не требуется запускать выборочную установку для подключения этой функции. Более того, это средство включено без дополнительной оплаты в выпуски Enterprise Edition, Standard Edition, Personal Edition, Developer Edition и Enterprise Evaluation Edition.


Ниже кратко перечислены возможности полнотекстового поиска в сервере SQL Server:

·         полнотекстовые запросы по обычным текстовым данным, содержащимся в реляционных таблицах;

·         полнотекстовые запросы, полностью интегрированные в язык T-SQL. В одном запросе можно объединять полнотекстовый и «традиционный» поиск;

·         поиск по всем индексированным столбцам таблицы;

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

Сервер SQL Server 2000 поддерживает полнотекстовый поиск по форматированным

документам (например, по документам Microsoft Office или по HTML-документам). Для реализации полнотекстового поиска документы следует хранить в базе данных в BLOB-столбцах (Binary Large Object) и отмечать для полнотекстового индексирования. Фильтры документов позволяют извлекать текстовое содержимое из документов определенных форматов. SQL Server проверяет каждый документ, определяя соответствующий ему фильтр. Во время индексирования загружается соответствующий фильтр и возвращает информацию о тексте, необходимую для создания полнотекстового индекса, игнорируя при этом незначащие слова[6]. SQL Server 2000 поставляется с фильтрами для HTML-файлов, текстовых файлов и документов Microsoft Office, однако разработчики могут создать свои собственные фильтры с помощью спецификации IFilter[7].

Ведение полнотекстовых индексов чрезвычайно важно, поскольку в этом случае пользователи могут найти интересующую их информацию даже тогда, когда она была лишь недавно внесена в базу данных. В сервере SQL Server 7.0 было необходимо планирование заданий пакетной обработки по обновлению полнотекстовых индексов. В сервер SQL Server 2000 в качестве новой технологии ведения индексов введено отслеживание изменений. Эта функция ведет список всех изменений данных, индексируемых для полнотекстового поиска. Автоматическое отражение этих изменений в индексе может выполняться по расписанию или с помощью службы SQL Server Agent[8]. Процесс обновления происходит асинхронно в фоновом режиме, что упрощает администрирование, снижает объем обработки (в результате более эффективного обновления) и способствует актуальности полнотекстовых индексов. Отслеживание изменений в большинстве случаев снижает необходимость полного и частичного обновления, но в случае возникновения такой необходимости сервер SQL Server 2000 выполняет эти операции быстрее, чем SQL Server 7.0[9].

В сервере SQL Server 2000 произведены также следующие усовершенствования полнотекстового поиска:

·         Поддержка полнотекстового индексирования в кластерах с восстановлением после отказа, позволяющая полнотекстовым индексам восстанавливаться вместе с экземпляром SQL Server 2000.

·         Полнотекстовые запросы для представлений, что обеспечивает дополнительные возможности[10].

·         Функция Top_N_By_Rank, возвращающая N результатов с наибольшим рангом, что полезно для повышения быстродействия.

·         Многоязыковая поддержка, являющаяся результатом поддержки в сервере SQL Server 2000 порядка сортировки на уровне столбца. Осмысленные перенос слов и учет спряжения глаголов (т. е. в зависимости от языка).


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