Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00
Лекция 17:

Создание и использование индексов

Создание полнотекстовых индексов с помощью хранимых процедур

Вы можете также создавать полнотекстовые индексы с помощью хранимых процедур. Здесь дается краткий обзор процесса создания полнотекстового индекса с помощью хранимых процедур; для получения полного синтаксиса используйте SQL Server 2000 Books Online.

Окно Completing the SQL Server Full-Text Indexing Wizard

Рис. 17.22. Окно Completing the SQL Server Full-Text Indexing Wizard
  1. Вызовите процедуру sp_fulltext_database с параметром enable, чтобы активизировать полнотекстовую поддержку в SQL Server.
  2. Вызовите процедуру sp_fulltext_catalog для создания каталога. Эту хранимую процедуру следует вызывать с параметром create.
  3. Вызовите процедуру sp_fulltext_table для создания связи между каталогом и парой таблица/индекс. Эту хранимую процедуру следует вызывать с параметром create, и вы должны также указать имя таблицы и имя уникального индекса, который будет использоваться полнотекстовым индексом.
  4. Вызовите процедуру sp_fulltext_column для добавления колонки, которая будет участвовать в полнотекстовом индексе. Эту хранимую процедуру следует запускать с опцией add и именем колонки, которая будет участвовать в каталоге, а процедура должна запускаться для каждой колонки индекса.
  5. Снова вызовите процедуру sp_fulltext_table. Этой хранимой процедуре должен быть передан параметр Асtivate для активизации каталога с данной таблицей.
  6. Снова вызовите процедуру sp_fulltext_catalog, но на этот раз ей должен быть передан параметр start_full для запуска полного обновления каталога для каждой строки каждой таблицы, связанной с данным каталогом.

Создание полнотекстового индекса с помощью хранимых процедур является более сложным, чем использование операторов T-SQL для создания индекса со структурой B-дерева. Но если вы создаете несколько полнотекстовых каталогов, то, возможно, имеет смысл пройти через эти трудности для создания файла сценария, выполняющего данную задачу.

Использование полнотекстового индекса

После создания полнотекстового индекса вы можете легко использовать его возможности. Вы можете задавать ключевые слова T-SQL, позволяющие использовать полнотекстовые индексы: CONTAINS и FREETEXT. В следующем операторе показано, как можно было бы выполнить типичное распознавание строк на SQL, если бы вы не использовали полнотекстовый индекс. В предложении WHERE данного запроса используется ключевое слово LIKE:

SELECT * FROM Customers WHERE ContАсtName
    LIKE '%PETE%'

Этот оператор, возможно, не дал бы нужного результата. Чтобы задать более удобный для пользователя запрос, используя возможности полнотекстового индекса, вы можете применить предикат CONTAINS. Предикат CONTAINS должен содержать имя колонки и требуемый текст, например:

SELECT * FROM Customers WHERE
    CONTAINS(ContАсtName, '"PETE"')

Предикат CONTAINS позволяет находить с помощью полнотекстового индекса текстовые строки, содержащие нужную символьную строку, такую как "PETER" или "PETEY".

Вы можете также выполнять поиск в полнотекстовых индексах с помощью ключевого слова FREETEXT. Как и CONTAINS, ключевое слово FREETEXT используется в предложении WHERE. FREETEXT можно использовать для поиска слова (или похожих слов), смысл которого соответствует смыслу определенного слова (или набора слов), указанного при вызове FREETEXT, но форма не полностью совпадает с указанным словом. Это можно сделать с помощью оператора SQL, аналогичного следующему:

SELECT CategoryName FROM Categories WHERE
    FREETEXT(Description, 'Sweets cАndy bread')

Этот запрос может найти категориальные имена, содержащие такие слова, как "sweetened", "cАndied" или "breads".