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

Применимо к: SQL Server (все поддерживаемые версии) Azure SQL базе данных

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 Положение
Instructions 1
are 2
applicable 3
значение 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, и их можно использовать в дальнейшем при обновлении или построении соответствующих списков стоп-слов. Сведения об обновлении файлов пропускаемых слов с переходом к спискам стоп-слов см. в разделе Обновление полнотекстового поиска.