Программирование >>  Программирование баз данных 

1 ... 243 244 245 [ 246 ] 247 248 249 ... 346


Глава 21

Обработка текста

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

При использовании обычных средств языка T-SQL (которые не предоставляют возможностей полнотекстового поиска) выбор вариантов форм запроса, которые могли бы применяться для обработки текстовой информации, является довольно ограниченным. В действительности количество таких вариантов, как описано ниже, не превышает двух или трех.

Применение конструкции LIKE. Обычно конструкция LIKE является чрезвычайно неэффективной и не позволяет использовать какие-либо индексные структуры, если шаблон поиска не начинается с явно заданного значения. Если же шаблон поиска начинается с какого-либо подстановочного символа (скажем, % или ), то СУБД SQL Server не может определить, с какого места в индексе следует начать поиск, поэтому любые индексы становятся бесполезными.

Использование какой-то другой формы сопоставления с образцом наподобие PATINDEX или CliARINDEX. Вообще говоря, операторы с конструкцией PATINDEX или CHARINDEX являются еще более неэффективными по сравнению с операторами с конструкцией LIKE, но позволяют выполнять действия, не осуществимые с помощью конструкции LIKE.

С другой стороны, средства полнотекстового поиска предоставляют возможность индексировать содержимое текста, что по существу сводится к ведению списка слов, который позволяет узнать, какие слова находятся в тексте и в каких строках. Кроме того, при использовании средств полнотекстового поиска не приходится ограничиваться лишь алгоритмами сопоставления с шаблонами, поскольку эти средства позволяют осуществлять поиск флективных форм слов. Например, можно задать в качестве критерия поиска слово university, но передать СУБД SQL Server указание, что должен также проводиться поиск слова universities, или, что еще в большей степени способствует успешному поиску, можно добиться того, чтобы СУБД SQL Server проводила поиск форм глаголов, например находила слово drunk по запросу, в котором указано слово drink. При этом именно пользователь средств полнотекстового поиска может определять, насколько точным должен быть поиск, но даже если искомое слово глубоко скрыто в крупном текстовом блоке, СУБД SQL Server может быстро находить строки, содержащие слово, которое задано в качестве критерия поиска.



Средства полнотекстового поиска, или FTS (Full-Text Search), позволяют обрабатывать документы почти любого типа, поддерживаемого прр1яожением Microsoft Index Server; это означает, что предусмотрена возможность хранить документы Word, Excel, Acrobat и другие поддерживаемые файлы в виде данных типа image и вместе с тем иметь возможность применять полнотекстовый поиск к содержимому этих файлов. Кроме того, определения API-интерфейса, предназначенного для создания сменных модулей Index Server, поддерживающих документы новых типов, опубликованы в открытой печати, поэтому в случае необходимости пользователь может даже написать собственные расширения для поддержки дополнительных типов документов.

Автор считает эту возможность чрезвычайно привлекательной особенностью средств полноценного поиска SQL Server. Деяо в том, что в наши дни сфера применения языка XML становится буквально необозримой (см. главу 16). Причем мы можем использовать интерфейс OPENXML для динамического формирования запросов к содержимому, представленному в виде кода XML, но в настоящее время отсутствует какой-лио способ индексации этюго содержимого. А поскольку теперь поддерживаются расширения, позволяющие создавать средства Index Server для обработки файлов нового типа, тю можно, например, создать расширение, предназначенное для обработки документа XML в конкретном формате, сохранить этот документ как данные типа image с помощью этюго расширения и тем самым получить возможность использовать полнотекстювый поиск для ускоренной обработки крупного хранилища документюв XML для определения того, в каких документах содержатся искомые данные. Такой подход к выполнению запроса ни в коем случае нельзя назвать идеальным (поскольку осуществляется поиск текстовой строки в документе XML, а не применяется запрос к отдельным столбцам, как в реляционном хранилище данных), но он все равно раскрывает множество замечательных возможностей.

Все вышеназванные функции полнотекстового поиска кратко рассматриваются в настоящей главе. Следует учитывать, что организация функционирования средств полнотекстового поиска отличается от тех средств SQL Server, которые рассматривались до настоящего времени, поскольку в основе этой организации отчасти лежит сама СУБД SQL Server, а также, в определенной степени, автономные модули, которые опираются на технологии, отличные от технологий SQL Server. В этой главе рассматриваются некоторые вопросы, характерные лишь для полнотекстовой индексации и поиска, а также приведено описание специального синтаксиса, который используется в полнотекстовых запросах.

Ниже перечислены основные темы, которые затрагиваются в настоящей главе.

Архитектура системы полнотекстового поиска.

Настройка полнотекстовых индексов и каталогов.

Синтаксис полнотекстовых запросов.

Нюансы применения полнотекстовых запросов.

Игнорируемые слова.

Кроме того, будут представлены два предусмотренных в последней версии способа выполнения большинства операций, связанных с полнотекстовым поиском. Изучение настоящей главы позволяет не только преодолеть все сложности, связанные с использованием средств FTS, но и освоить великолепные функциональные возможности, раскрывающиеся благодаря наличию этих средств.



Архитектура системы полнотекстового поиска

Многие пользователи при попытке разобраться в устройстве архитектуры средств FTS сталкиваются со значительными сложностями. В этом нет ничего удивительного, поскольку на первый взгляд организация взаимодействия различных компонентов FTS кажется непостижимой.

Поэтому прежде всего необходимо понять, что ядро системы полнотекстового поиска фактически не входит в состав СУБД SQL Server. На самом деле это ядро представляет собой совместно используемый технологический компонент, который впервые появился в составе приложения Microsoft Index Server. Сама основополагающая технология была первоначально реализована с помощью службы, известной под названием MSSearch, а теперь поддерживается с помощью собственной службы, разработкой программного обеспечения которой руководит группа разработчиков SQL Server (но, насколько известно автору, программное обеспечение этой службы создано на основе того же прикладного кода, что и службы MSSearch). Вышеназванная собственная служба, получившая имя SQL Server FullText Search (и вошедшая в состав применяемого по умолчанию экземпляра SQL Server, о чем сввдетельствует упоминание о самой СУБД в имени службы), является превосходным средством обработки бесформатных текстовых данных и формирования списков слов. Корпорацией Microsoft было принято решение отделить реализацию полнотекстового поиска в SQL Server от службы индексации, работающей под управлением операционной системы, что позволило повысить эффективность взаимодействия службы полнотекстового поиска с основной машиной базы данных (рис. 2L1). Служба SQL Server FullText Service (или сокращенно FTS) позволяет выполнять поиск отдельных слов и словосочетаний, а также накапливать информацию о том, где были обнаружены соответствующие фрагменты текста.


Запрос на получение данных/ данные с SQL Server

Администратор SQLServer ~

Машина полнотекстового поиска (MSFTESQL)

Индексированные данные (предоставляемые с помощью общей памяти)

Обработка запросов/ сохранение в каталоге

Каталог

Программная реализация протокола

Фильтр

Синтаксический анализатор

Фоновая программа фильтра (MSFTEFD)

Рис. 21.1. Структура системы полнотекстового поиска



1 ... 243 244 245 [ 246 ] 247 248 249 ... 346

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика