Настройка стоп-слов, списков стоп-слов и управление ими для полнотекстового поиска

Область применения:SQL ServerAzure SQL Database

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

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

Списки стоп-слов. Управление стоп-словами в базе данных производится через объекты, называемые списками стоп-слов. Список стоп-слов связан с полнотекстовым индексом и применяется к полнотекстовым запросам по этому индексу.

Использование имеющегося списка стоп-слов

Имеющийся список стоп-слов можно использовать следующими способами.

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

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

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

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

Создание списка стоп-слов с помощью Transact-SQL

Используйте инструкцию CREATE FULLTEXT STOPLIST.

Создание списка стоп-слов с помощью среды Management Studio

  1. В обозревателе объектов разверните узел сервера.

  2. Разверните узел Базы данных, а затем разверните базу данных, в которой нужно создать список полнотекстовых стоп-слов.

  3. Разверните узел Хранилище, а затем щелкните правой кнопкой мыши узел Полнотекстовые списки стоп-слов.

  4. Выберите пункт Создание полнотекстового списка стоп-слов.

  5. Введите имя нового списка стоп-слов.

  6. Дополнительно можно указать владельца списка стоп-слов.

  7. Выберите один из следующих вариантов создания списка стоп-слов.

    • Создать пустой список стоп-слов

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

    • Создать из существующего полнотекстового списка стоп-слов

    Дополнительные сведения см. в разделе "Новый полнотекстовый список стоп-слов" (страница "Общие") .

  8. Нажмите ОК.

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

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

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

Используйте CREATE FULLTEXT INDEX (Transact-SQL).

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

Используйте ALTER FULLTEXT INDEX (Transact-SQL).

Изменение стоп-слов в списке стоп-слов

Добавление или удаление стоп-слов из списка стоп-слов с помощью Transact-SQL

Используйте ALTER FULLTEXT STOPLIST (Transact-SQL).

Добавление или удаление стоп-слов из списка стоп-слов с помощью среды Management Studio

  1. В обозревателе объектов разверните узел сервера.

  2. Раскройте узел Базы данных, а затем — соответствующую базу данных.

  3. Разверните узел Хранилищеи выберите Полнотекстовые списки стоп-слов.

  4. Щелкните правой кнопкой мыши список стоп-слов, свойства которого необходимо изменить, и выберите пункт Свойства.

  5. В диалоговом окне Свойства полнотекстового списка стоп-слов выполните указанные ниже действия.

    1. В списке Действия выберите одно из следующих действий: Добавить стоп-слово, Удалить стоп-слово, Удалить все стоп-словаили Очистить список стоп-слов.

    2. Если для выбранного действия доступно текстовое поле Стоп-слово , введите одно стоп-слово. Это стоп-слово должно быть уникальным; иными словами, оно еще не должно присутствовать в списке стоп-слов для выбранного языка.

    3. Если для выбранного действия доступен список Язык полнотекстового поиска , выберите язык.

  6. Нажмите ОК.

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

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

Используйте sys.fulltext_stopwords (Transact-SQL).

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

Используйте sys.fulltext_stoplists (Transact-SQL) и sys.fulltext_stopwords (Transact-SQL).

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

Используйте sys.dm_fts_parser (Transact-SQL).

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

Используйте параметр конфигурации сервера transform noise words.

Дополнительные сведения о позиции стоп-слов

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

Word Положение
Инструкции 1
are 2
применимо 3
to 4
these 5
Adventure 6
Works 7
Cycles 8
модели 9

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

Обновление пропускаемых слов из SQL Server 2005

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