|
Программирование >> Программирование баз данных
Чтобы иметь возможность выполнять полнотекстовые запросы применительно к любой таблице SQL Server, необходимо вначале создать полнотекстовый индекс для этой таблицы. Создание и сопровождение такого полнотекстового индекса (или заполнение индекса) осуществляется в процессе, в котором СУБД SQL Sei-ver передает потоки текстовой информации в машину системы полнотекстового поиска, слова из каждого текстового потока каталогизируются, и накапливается информация, позволяющая установить связь между записью каталога и строкой, в которой было обнаружено слово, зафиксированное в каталоге. По умолчанию машина системы полнотекстового поиска инсталлируется с использованием варианта запуска Manual (Вручную), предусмотренного для служб; это означает, что до начала эксплуатации службы полнотекстового поиска необходимо произвести ее запуск. Прежде чем приступить к выполнению любых примеров этой главы, читатель должен осуществить запуск службы, а после формирования хотя бы одного полнотекстового индекса на любом сервере автор рекомендует перейти к использованию опции запуска Automatic (Автоматически). По умолчанию ни для одной таблицы не поддерживаются какие-либо функциональные средства полнотекстового поиска. Сам факт, что в базе данных есть таблица, в которой представлены данные типа text, не гарантирует создания полнотекстового индекса на таблице; иными словами, все необходимые полнотекстовые индексы должны быть созданы явно. Но даже после создания полнотекстового индекса в нем отсутствует какая-либо информация, поэтому для обеспечения полноценного использования индекса его необходимо заполнить. В процессе заполнения происходит просмотр столбцов, которые указаны в качестве поддерживаемых индексом, и формируется список слов, предназначенных для дальнейшего использования. Во многом аналогично стандартным индексам СУБД SQL Server, в состав индекса входят только столбцы, указанные как относящиеся к индексу. Но, в отличие от обычных индексов, применяемых в СУБД SQL Server, допускается использование лишь одного индекса в расчете на каждую таблицу, поэтому в индекс необходимо включить все столбцы, которые должны участвовать в полнотекстовых запросах. Но на этом различия между обычными и полнотекстовыми индексами не заканчиваются. Основные различия описаны ниже. Местонахождение. Индексы SQL Server хранятся в составе основного файла (файлов) базы данных. С другой стороны, полнотекстовые индексы хранятся в так называемом полнотекстовом каталоге. Благодаря этому значительно упрощается реализация обычно принимаемого решения, согласно которому полнотекстовый каталог должен храниться на отдельном физическом устройстве по сравнению с остальной частью базы данных (что способствует повышению производительности). Метод создания. Индексы SQL Server создаются с помощью команды CREATE INDEX языка T-SQL, средств SMO или \VMI (безусловно, еще один способ предусматривает использование программы Management Studio, но в основе этого способа также лежат средства SMO). С другой стороны, полнотекстовые индексы создаются либо с помощью специальных системных хранимых процедур, либо с помощью новой команды CREATE FULLTEXT INDEX. Метод обновления. Индексы SQL Server обновляются автоматически в ходе обычного внесения изменений в основополагающие данные SQL Server. С другой стороны, полнотекстовые индексы могут либо заполняться по требованию, либо поддерживаться с помощью так называемого механизма отслеживания изменений с очисткой по требованию. На этом краткое описание архитектуры средств полнотекстового поиска заканчивается. По мере дальнейшего изучения настоящей главы вы сможете убедиться в том, что влияние различий между обычными способами осуществления операций обработки данных в СУБД SQL Server и способами осуществления полнотекстового поиска становится все более очевидным. Настройка полнотекстовых индексов и каталогов 1Сак было описано в предыдущем разделе, количество полнотекстовых индексов, которые могут быть заданы на каждой таблице в СУБД SQL Server, должно быть равно нулю или единице. Эти полнотекстовые индексы хранятся в файле (называемом пол-нотекстовым каталогом), который является внешним по отношению к базе данных SQL Server и системным файлам этой базы данных. В одном каталоге может храниться несколько полнотекстовых индексов. Все хранимые в каталоге индексы должны относиться к одной и той же базе данных; однако может потребоваться сохранять индексы из одной базы данных в нескольких каталогах, чтобы иметь возможность управлять заполнением этих индексов с помощью отдельных графиков. Ввод в действие средств полнотекстового поиска в базе данных в версии SQL Server 2005 применение средств полнотекстовой индексации разрешено по умолчанию для любой создаваемой базы данных. Но в предыдущих версиях SQL Server не разрешается создавать полнотекстовые каталоги или индексы до тех пор, пока не будет разрешено применение средств полнотекстового поиска для рассматриваемой базы данных. Эту особенность следует учитывать, приступая к работе с одной из более ранних версий SQL Server. Чтобы проверить, разрешено ли или запрещено применение средств полнотекстовой индексации, можно воспользоваться системной функцией DATABASEPROPERTYEX. Для этого достаточно написать простой запрос для вызова следующей функции: SELECT DATABASEPROPERTYEX{AdventureWorks, IsFulltextEnabled ) Этот запрос возвращает значение 1, если использование средств полнотекстовой индексации разрешено, в противном случае возвращает 0. (Дополнительная информация о том, какие сведения позволяет получить функция DATABASEPROPERTYEX, приведена в приложении А.) Если требуется разрешить (или запретить) использование средств полнотекстовой индексации в базе данных, то можно воспользоваться специальной системной хранимой процедурой sp fulltext database. Синтаксис оператора вызова этой процедура чрезвычайно прост: ЕХЕС sp fulltext database [©action =] {enabledisable} Опция enable указывает, что необходимо разрешить полнотекстовую индексацию для текущей базы данных. Если для текущей базы данных уже заданы какие-либо полнотекстовые каталоги, то они уничтожаются, как и любые связи таблиц базы данных с этими каталогами. К данному замечанию следует отнесшись со всей серьезностью. При повторном вводе в действие средств полнотекстовой индексации не выдаются какие-либо приглаиления или предупреждения и прошходит немедленное и окончательное удаление всего, чпю оттюсится к полнотекстовой индексации в текущей базе данных, чтобы можно было начать все с нуля. Этю означает, что следует внимательно провести две следующие проверки: во-первых, удостовериться, чтю действительно необходимо повторно разрешить использование средств полнютекстовой индексации, и, во-вторых, БЕЗОГОВОРОЧНО убедиться в тюм, чтю при выполнении указаннюй хранимой процедуры правильно выбрана база данных. Опция disable позволяет отменить выполнение полнотекстовых операций в текущей базе данных и удалить все применяемые в текущее время каталоги и индексы. В качестве краткого примера рассмотрим операцию отмены полнотекстовой индексации для образца базы данных AdventureWorksDW: USE AdventureWorksDW EXEC sp fulltext database ©action = disable После выполнения этой операции полнотекстовая индексация отменяется. Следует учитывать, что в СУБД SQL Server фактически не предусмотрена передача пользователю достаточного объема информации, позволяющего убедиться в том, чтю применение полнотекстовых операций успешно разрешено. Обнаруживается лишь несколько сообщений о затронутых строках (rows affected) и не предусмотрено даже применение оператора вывода текста done enabling full- text search (применение полнотекстового поиска разрешено) или чего-то подобного. Тем не менее при возникновении какого-либо нарушения в работе должно появиться сообщение об ошибке в той или иной форме. Создание, изменение и удаление полнотекстового каталога, а также управление им с выходом версии SQL Server 2005 был введен новый синтаксис для создания, изменения и удаления полнотекстовых каталогов, а также выполнения других действий с ними. С началом новых разработок рекомендуется использовать именно этот синтаксис, при условии, что не нужно обеспечивать обратную совместимость с SQL Server 2000 и более ранними версиями. Превосходной особенностью нового синтаксиса является то, что в нем используются языковые элементы, а не системные хранимые процедуры. Кроме того, эти новые языковые элементы являются намного более совместимыми с синтаксисом, используемым в программных продуктах полнотекстовой обработки других СУБД. Создание полнотекстовых каталогов С версии SQL Server 2005 предусмотрена возможность применять новый синтаксис создания полнотекстовых индексов.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |