Пошук слів

Як тільки каталог буде створений, функція повнотекстового пошуку готова до роботи виконується за допомогою функції contains, яка допомагає передати шукане слово механізму повнотекстового пошуку і дочекатися відповіді Пошук слова в запиті може виконуватися одним із двох методів: contains і ContainsTable

Функція contains

Функція contains оперує в реченні WHERE, майже як WHERE IN (критерій) Параметри, поміщені в дужки, передаються службі повнотекстового пошуку, яка повертає список первинних ключів, що задовольняють критерієм

Першим параметром, переданим службі MS Search, є імя стовпчика або зірочка, якщо пошук потрібно виконати у всіх стовпцях однієї таблиці Якщо пропозиція FROM містить кілька таблиць, то всі вони повинні бути перераховані в параметрі contains Наведений як приклад запит повнотекстового пошуку шукає слово Lion в усіх проіндексованих стовпцях:

USE Aesop SELECT Title FROM Fable

WHERE CONTAINS (Fable*,Lion)

Наступні таблиці містять шукане слово або в заголовку, або в моралі, або в основному тексті:

Title

The Dogs and the Fox The Hunter and the Woodman The Ass in the Lions Skin Androcles

Функція ContainsTable

У реченні WHERE може міститися не тільки ключове слово повнотекстового пошуку – функція ContainsTable працює як керована таблиця або подзапрос і повертає результуючий набір даних Ця функція SQL Server відкриває широкі можливості

Результуючий набір даних ця функція повертає у двох стовпцях Перший стовпець, Key, ідентифікує рядок, використовуючи унікальний індекс, використаний при конфігуруванні каталогу

Другий стовпець, Rank, ранжує рядки, використовуючи значення від 1 (найменше значення) до 1000 (найбільше значення) Не існує більшого чи меншого значення, яке може сприйняти сервер Цей діапазон визначається декількома факторами

■ Частота і унікальність слів в таблиці

■ Частота і унікальність слів у стовпці

У той же час не існує випадків, коли будь-яке слово не було ранжовано вище загальновживаного

Практично ті ж параметри визначають синтаксис функції ContainsTabele Наступний запит повертає текстові дані зі служби MS Search:

SELECT *

FROM CONTAINSTABLE (Fable, *, Lion)

Буде отримано наступний результат:

KEY RANK

3&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 86

4&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 80

20&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 48 14 32

Сам по собі ключ (поле Key) марний для людини, проте, будучи обєднаним з результатами звернення функції Contains Table до таблиці Fable, дозволяє отримати стовпці рангу і заголовка:

SELECT FableTitle, FTSRank

FROM Fable

JOIN CONTAINSTABLE (Fable, *, Lion1) FTS ON FableFablelD = FTS[KEY]

ORDER BY FTSRank DESC

Результат буде наступним:

Title                                 Rank

Androcles                         86

The Butt in the Lions Skin 80

The Hunter and the Woodman 4 8

The Dogs and the Fox        32

Четвертий параметр функції Contains Table обмежує обсяг результатів, що повертаються механізмом повнотекстового пошуку, практично як предикат ТОР інструкції SELECT Це передбачає упорядкування за рангом, так що в результат увійде задану кількість значень з найбільшим рангом У наступному прикладі продемонстровано використання цього параметра:

SELECT FableTitle, Rank

FROM Fable

JOIN CONTAINSTABLE (Fable, *, Lion, 2) FTS ON FableFablelD = FTS[KEY]

ORDER BY FTSRank DESC

У результат пошуку увійдуть всього два значення:

Title                                          Rank

Androcles                                                                                86

The Ass in the Lions Skin                                                     8 0

Основна перевага використання цього параметра полягає в тому, що сам механізм повнотекстового пошуку обмежує обсяг результатів і не доводиться додатково виконувати інструкцію SELECT з предикатом ТОР Цей приклад ілюструє принципи перенесення навантаження з клієнтського компютера на сервер, так як в даному випадку механізм повно-текстового пошуку MS Search є серверним процесом, a SQL Server – клієнтським

Оскільки механізм повнотекстового пошуку є компонентом, відмінним від SQL Server, він змагатиметься з останнім за ресурси процесора Виходячи з цього, використання механізму MS Search поряд з SQL Server дозволить більш ефективно використовувати багатопроцесорні сервери Механізм MS Search також інтенсивно використовує память і файл підкачки У сильно завантажених базах даних з регулярними оновленнями і частим пошуком інформації в великих текстових стовпцях такий розподіл функцій буде кращим рішенням

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*