Главная » Microsoft SQL Server, Базы данных » Использование полнотекстового поиска N1

0

?               есколько лет назад я написал программу поиска слов в

II    U крупной базе данных. Программа сканировала все документы и создавала таблицу частоты слов как ассоциацию “многие ко многим” между ней и таблицей документов. Программа работала достаточно хорошо, и поиск выполнялся довольно быстро. Я получил удовольствие от выполненной работы, но вам предоставляются более благоприятные условия.

Серверная версия операционной системы Windows содержит структурированную систему индексации слов и фраз, называемую MS Search. Это не просто обычное сканирование слов — механизхм полнотекстового поиска осуществляет лингвистический анализ, отделяя корни слов и спрягая глаголы на разных языках. SQL Server взял на вооружение этот механизм для полнотекстового поиска в строках и столбцах.

Стандарт ANSI SQL использует оператор like для поиска слов, позволяя использовать символы макроподстановки. Следующий фрагмент программы выполняет поиск в учебной базе данных Fables, содержащей басни Эзопа:

– SQL Where Like SELECT Title FROM Fable

WHERE Fabletext LIKE ,%lion%’

AND Fabletext LIKE ‘%bold%’

Результат выполнения инструкции следующий:

Title

The Hunter and the Woodman

Во всех примерах, которые приводятся в настоящей главе, используется база данных Fables. Сценарий Aesop_Create. sql создает эту базу данных и наполняет ее двадцатью пятью баснями Эзопа. Все примеры программ, приведенные в настоящей главе, содержатся в файле Chl3.sql.

Основная проблема использования выражения where. . .like заключается в низкой производительности. Индексы создаются по первым буквам слова, поэтому оператор like ‘ word%’ выполнится достаточно быстро, но в то же время производительность оператора like ‘ %word% ‘ оставляет желать лучшего. Поиск подстрок в строках не может использовать структуру двоичного дерева для ускорения работы, поэтому приходится прибегать к сканированию таблиц (рис. 8.1). Это все равно что искать всех Иванов в телефонной книге. Телефонные книги не упорядочены по именам, поэтому данная задача потребует просмотра абсолютно всех страниц.

Принимая это во внимание, компания Microsoft в конце 1998 года переработала свои поисковые механизмы для версии SQL Server 7. Новый механизм получил название MSSearch и был также использован для осуществления поиска в программах Exchange и SharePoint. Совершенно отдельная версия этого механизма была подготовлена к выходу операционной системы SQL Server 2000.

Полнотекстовый поиск в версии SQL Server 2005 представляет уже третье поколение поисковых механизмов и является наиболее полнофункциональным и масштабируемым. Служба полнотекстового поиска входит в состав редакций Standard, Workgroup и Enterprise,

Поисковый механизм, поставляемый с SQL Server 2005, носит название MSFTESQL; по умолчанию он отключен. Для включения этой службы нужно запустить утилиту SQL Server Surface Area Configuration Tool, развернуть пункт Surface Area Configuration for Services and Components, раскрыть свой экземпляр сервера и найти узел Full-Text Search. Затем следует установить переключатель для этого узла в положение run automatically.

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

?               Поиск одного слова, находящегося рядом с другим.

?               Использование в поисковой фразе символов макроподстановки.

?               Поиск различных словоформ (например, ran, run и running).

?               Взвешивание слов и фраз, которые более существенны, чем остальные.

?               Выполнение нечеткого поиска слов и фраз.

?               Поиск символьных данных с внедренными двоичными объектами.

Наиболее существенным улучшением в версии SQL Server 2005 является повышение производительности практически в 10-100 раз по сравнению с полно- текстовым поиском версии SQL Server 2000. Существуют и другие улучшения, например доверительные фильтры, улучшенная поддержка языков, нечувствительность к ударениям, поддержка тезауруса, многостолбцовых запросов, связанных серверов, репликации, резервирования баз данных, подключения и отключения каталогов, индексации свойств документа и устранения ошибок.

Новый механизм поиска MSFTESQL (аббревиатура от Microsoft Full-Text Engine for SQL Server), входящий в состав SQL Server 2005, был полностью переработан для повышения производительности и теперь полностью интегрирован в сервер.

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии