Поделиться через


Стоп-слова и списки стоп-слов

Чтобы предотвратить чрезмерное увеличение полнотекстового индекса, в SQL Server реализован механизм, отбрасывающий часто встречающиеся строки, не повышающие эффективность поиска. Эти отброшенные строки называются стоп-словами. Во время создания индекса средство полнотекстового поиска не включает стоп-слова в полнотекстовый индекс. Это значит, что полнотекстовые запросы не будут выполнять поиск по стоп-словам.

Важное примечаниеВажно!

Применявшиеся в SQL Server 2005 пропускаемые слова были заменены стоп-словами. После обновления базы данных от предыдущей версии до версии SQL Server 2008 файлы пропускаемых слов становятся больше неприменимыми в SQL Server 2008. Однако файлы пропускаемых слов хранятся в папке FTDATA\FTNoiseThresaurusBak, и их можно использовать в дальнейшем при обновлении или построении соответствующих списков стоп-слов SQL Server 2008. Сведения об обновлении файлов пропускаемых слов с переходом к спискам стоп-слов см. в разделе Обновление полнотекстового поиска.

Стоп-слово может быть словом конкретного языка или маркером, не имеющим лингвистического значения. Например, в английском языке такие слова, как «a», «and», «is» и «the», не включаются в полнотекстовый индекс, потому что при поиске они бесполезны.

Хотя стоп-слова при поиске не учитываются, полнотекстовый индекс принимает во внимание расположение таких слов. Рассмотрим для примера фразу «Instructions are applicable to these Adventure Works Cycles models». Позиции слов в этой фразе приведены в следующей таблице.

Word

Позиция

Instructions

1

are

2

applicable

3

to

4

these

5

Adventure

6

Works

7

Cycles

8

models

9

Стоп-слова «are», «to» и «these», занимающие позиции 2, 4 и 5, в полнотекстовый индекс не включаются. Однако данные об их позициях сохраняются, благодаря чему позиции других слов в фразе остаются неизменными.

Списки стоп-слов

В SQL Server 2008 стоп-словами в базе данных можно управлять с помощью объектов, называемых списками стоп-слов. Список стоп-слов связан с полнотекстовым индексом и применяется к полнотекстовым запросам по этому индексу.

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

Списки стоп-слов можно создать любым из следующих способов.

  • Использование поддерживаемого системой списка стоп-слов в базе данных. В составе SQL Server поставляется системный список стоп-слов, который содержит наиболее часто используемые стоп-слова для каждого поддерживаемого языка, т. е. для любого языка, связанного по умолчанию с данными конкретными средствами разбиения по словам. Системный список стоп-слов содержит общие стоп-слова для всех поддерживаемых языков. Можно скопировать системный список стоп-слов и внести необходимые изменения в созданную копию, добавляя и удаляя стоп-слова.

    Системный список стоп-слов устанавливается в базе данных Resource.

  • Создание собственного списка стоп-слов, а затем добавление к нему стоп-слов, относящихся к любому заданному языку. При необходимости можно удалять стоп-слова из этого списка.

  • Использование существующего пользовательского списка стоп-слов из другой базы данных в текущем экземпляре сервера и затем (при необходимости) добавление и удаление стоп-слов.

Важное примечаниеВажно!

Инструкции CREATE FULLTEXT STOPLIST, ALTER FULLTEXT STOPLIST и DROP FULLTEXT STOPLIST поддерживаются только в условиях применения уровня совместимости 100. При использовании уровней совместимости 80 и 90 эти инструкции не поддерживаются. Тем не менее, при любом уровне совместимости системный список стоп-слов автоматически связывается с новыми полнотекстовыми индексами.

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

Добавление или удаление стоп-слов из списка стоп-слов

Удаление списка стоп-слов

Использование списка стоп-слов в запросах

Чтобы использовать список стоп-слов в запросах, нужно связать его с полнотекстовым индексом. Можно добавить список стоп-слов к полнотекстовому индексу при создании индекса или изменить индекс позже, добавив список стоп-слов.

Создание полнотекстового индекса и его связь со списком стоп-слов

Связывание или разъединение списка стоп-слов с существующим полнотекстовым индексом

Отключение сообщения об ошибке в случае, если стоп-слова вызывают ошибку логической операции в полнотекстовом запросе

Просмотр списков стоп-слов и их метаданных

Просмотр всех стоп-слов из списка стоп-слов

Получение сведений обо всех списках стоп-слов в текущей базе данных

Просмотр разметки, полученной в результате применения средства разбиения по словам, тезауруса и списка стоп-слов