|
Программирование >> Программирование баз данных
Удаление полнотекстовых каталогов Оператор удаления полнотекстового каталога не требует особых пояснений, поскольку его синтаксис соответствует основному синтаксису операторов DROP, применяемых на протяжении всей данной книги: DROP FULLTEXT CATALOG <catalog name> Выполнение этого оператора, безусловно, приводит к удалению полнотекстового каталога (включая его основополагающий файл в файловой системе). Создание, изменение и удаление полнотекстовых индексов, а также управление ими Следует отметить, что полнотекстовые каталоги, работа с которыми была подробно описана выше, представляют собой всего лишь контейнеры. Иными словами, полнотекстовый каталог, отдельно взятый, не позволяет выполнять какие-либо содержательные действия. А для работы нам фактически требуются полнотекстовые индексы. Таким образом, полнотекстовый каталог представляет собой лишь место хранения полнотекстовых индексов, а саму применяемую справочную информацию, которая позволяет быстро и эффективно выполнять полнотекстовые запросы, фактически содержат сами индексы. Создание полнотекстовых индексов Основные элементы команды создания полнотекстовых индексов ненамного отличаются от аналогичных элементов команды создания обычных индексов. Тем не менее обычные индексы обладают свойствами, характерными лишь для hpix, например, могут быть кластеризованными или некластеризованными, и такие же характерные свойства имеют полнотекстовые индексы. Синтаксис оператора создания полнотекстового индекса выглядит следующим образом: CREATE FULLTEXT INDEX ON <table name> [ ( <column name> [TYPE COLUMN <type column name> ] [LANGUAGE <language term>] [,...n])] KEY INDEX index name [ON <fulltext catalog name> ] [WITH { CHANGE TRACKING { MANUAL AUTO OFF } [, NO POPULATION] } Обратите внимание на то, что в приведенном выше синтаксическом определении необязательные параметры расположены немного иначе по сравнению с другими синтаксическими определениями. Дело в том, что обычно обязательные элементы перечисляются в первую очередь, но особенность рассматриваемого синтаксиса такова, что необязательный параметр (список столбцов) задан перед обязательным параметром (ключевой индекс). Начнем с рассмотрения краткого примера, а затем перейдем к описанию отдельных частей определения. CREATE FULLTEXT INDEX ON Production.ProductModel ( Name LANGUAGE English) KEY INDEX PK ProductModel ProductModelID ON MainCatalog WITH CHANGE TRACKING OFF, NO POPULATION В предыдущем операторе был создан полнотекстовый индекс для таблицы Production. ProductModel. В частности, было указано, что национальным языком, который используется в индексируемом столбце, является американский диалект английского языка. При лселании можно было бы добавить запятую, за которой следует имя др)того столбца, а также, возможно, ввести ключевое слово TYPE COLUMN или другой идентификатор LANGUAGE. Вслед за определением языка национального языка было явно указано, в каком полнотекстовом каталоге должен храниться этот индекс, а также определено, что отслеживание изменений отменяется, а начальное заполнение индекса не производится. При рассмотрении этого оператора возникает много вопросов, поэтому рассмотрим его отдельные части более подробно. Обратите внимание на то, что имя полнотекстового индекса не задано. Для каждой конкретной таблицы может быть предусмотрен только один полнотекстовый индекс, поэтому необходимость присваивать ему имя отсутствует (по существу для идентификации полнотекстового индекса служит таблица, на которой он создан). При создании полнотекстового индекса следует тщательно следить за тем, чтобы в него были включены все столбцы, на которых должен выполняться полнотекстовый поиск. Список столбцов Часть оператора создания полнотекстового индекса с определением списка столбцов, по-видимому, является наиболее сложной. Безусловно, в приведенном выше синтаксическом определении задан параметр <column name>, но фактически в качестве значения этого параметра должен быть приведен список столбцов. Затруднение, связанное с применением этого параметра, состоит в том, что для каждого определяемого столбца следует указывать все необходимые значения, относящиеся к этому столбцу, и только после этого переходить к след)тющему столбцу. Таким образом, необходимо включить параметры TYPE COLUMN и LANGUAGE (если решено их использовать) и только после этого вводить имя следующего столбца. Поэтому, если бы, например, было решено включить также столбец с описанием каталога, то и в этом случае пришлось бы добавить информацию об этом столбце после определения первого столбца: CREATE FULLTEXT INDEX ON Production.ProductModel { Name Ключевое слово LANGUAGE English, CatalogDescription) KEY INDEX PK ProductModel ProductModelID ON MainCatalog WITH CHANGE TRACKING OFF, NO POPULATION Ключевое слово language Ключевое слово LANGUAGE определяет, какой национальный язык используется в столбце, указанном перед этим словом. Этот параметр требуется для определения игнорируемькс слов (таковыми называются слова, которые встречаются часто, но не позволяют повысить качество поиска; дополнительная информация об этом приведена ниже в данной главе), а также таких характеристик текста, как схема упорядочения. В качестве значения параметра LANGUAGE можно указать любой язык, для которого в СУБД SQL Server предусмотрена поддержка локализации (ко времени написания данной книги поддерживались 33 национальных языка). Чтобы получить список псевдонимов поддерживаемых языков, можно запросить таблицу sys languages базы данньпс master: SELECT name, alias FROM master..syslanguages Ключевое слово type column Автору не удалось найти в базе данньпс AdventureWorks удачный пример, который можно было бы использовать в этой книге (к сожаленик>), но опция TYPE COLUMN предназначена для использования в тех случаях, если требуется выполнить полнотекстовую индексацию документов, хранящихся в столбце с типом данных image или varbinary. Предположим, что СУБД SQL Server служит для управления документами (такая область применения SQL Ser\er далеко не редкость). Если в базе данньпс хранятся документы, созданные с помощью одного или нескольких приложений, таких как Microsoft Word (. doc). Acrobat (. PDF), Excel (. XLS) или текстовый редактор (. TXT), то для полнотекстового поиска потребуется указать, какой документ хранится в каждой анализируемой строке, чтобы в ходе анализа каждой строки можно было применить подходящий для этого сменный модуль анализа. В данном случае необходимо добаврхть к таблице еще один столбец (кроме столбца с типом данных image или varbinary), который содержит информацию о расширении (. DOC, . PDF и т.д.) документа, хранящегося в двоичном формате. Ключевое слово key index В отличие от всех прочих опций в команде CREATE FULLTEXT INDEX, опция KEY INDEX является обязательной. В каждой таблице, применяемой для полнотекстовой индексацрхи, должен быть предусмотрен столбец, который однозначно определяет каждую строку; таковым может быть столбец, на котором задан первичный ключ Р1ли определено ограничение уникальности. При определении параметра KEY INDEX необходимо учитывать, что должно быть задано имя индекса, связанного с уникальным вдентификатором, а не имя столбца Р1ЛИ ограничения целостности. Конструкция on Конструкция ON задает лишь имя полнотекстового каталога, в котором должен храниться создаваемый индекс. Этот параметр является необязательным, если в базе данных предусмотрен применяемый по умолчанию полнотекстовый каталог, а если таковой не определен, то становится обязательным. Опция with Опция WITH позволяет задать команды, регламентирующие способ заполнения ивдекса данными и указывающие, как должны учитываться изменения в таблице, на основе которой создан полнотекстовый индекс.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |