Критические изменения в полнотекстовом поиске

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

Критические изменения полнотекстового поиска в SQL Server 2012

Изменены параметры сортировки для столбца «name» в представлении sys.fulltext_languages

Параметры сортировки для языка столбца name в представлении каталога sys.fulltext_languages (Transact-SQL) изменены с фиксированных параметров сортировки базы данных Resource на параметры сортировки по умолчанию, выбранные для экземпляра SQL Server. Это изменение позволяет сравнивать значения в столбце name при соединении представления sys.syslanguages (Transact-SQL) с представлением sys.fulltext_languages. Например, можно создать запрос, выдающий список всех баз данных, у которых язык полнотекстового поиска по умолчанию отличается от языка базы данных по умолчанию.

Критические изменения полнотекстового поиска в SQL Server 2008

Следующие критические изменения были внесены в компонент полнотекстового поиска (Full-Text Search) между выпуском SQL Server 2005 и выпуском SQL Server 2008 (и последующими версиями).

Компонент

Сценарий

SQL Server 2005

SQL Server 2008 и последующие версии

CONTAINSTABLE с определяемыми пользователем типами

Полнотекстовый ключ — это определяемый пользователем тип SQL Server, например MyType = char(1).

Возвращаемый ключ имеет тип, назначенный определяемому пользователем типу.

В этом примере это тип char(1).

Возвращаемый ключ имеет определяемый пользователем тип. В этом примере это тип MyType.

Параметр top_n_by_rank (для инструкций Transact-SQL CONTAINSTABLE и FREETEXTTABLE)

Запрос top_n_by_rank, использующий значение 0 в качестве параметра.

Завершается с сообщением об ошибке, указывающим на то, что значение должно быть больше нуля.

Завершается успешно, возвращая 0 строк.

CONTAINSTABLE и ItemCount

Удаление строк из базовой таблицы перед передачей изменений компоненту MSSearch.

Функция CONTAINSTABLE возвращает фантомную запись. ItemCount не изменяется.

Функция CONTAINSTABLE не возвращает фантомных записей.

ItemCount

Таблица содержит документы или типы столбцов, имеющие значение NULL.

Кроме индексированных документов, значение ItemCount также учитывает пустые документы и документы, имеющие пустой тип.

В значении ItemCount учитывается только число индексированных документов.

Каталог ItemCount

Столбец BLOB с расширением NULL.

Учитывается в значении ItemCount каталога

Не учитывается в значении ItemCount каталога.

UniqueKeyCount

Запрашивает из каталога число уникальных ключей. Например, имеются две таблицы (таблица1 и таблица2), в каждой из которых содержится по три слова: слово1, слово2 и слово3.

UniqueKeyCount = 9. В следующей таблице показано, как получено это значение.

таблица1 = 3

EOF для полнотекстового индекса таблицы1 = 1

таблица2 = 3

EOF для полнотекстового индекса таблицы2 = 1

полнотекстовый каталог = 1

Для каждой таблицы значение UniqueKeyCount равно числу различающихся ключевых слов + 1 (0xFF). Одинаковые слова в > различных документах не считаются уникальными ключами.

Для каталога значение UniqueKeyCount представляет сумму значений UniqueKeyCount всех таблиц каталога. Одинаковые слова, содержащиеся в различных таблицах, считаются уникальными ключами. В данном случае число уникальных ключей равно 8.

Параметр precompute rank уровня сервера

Оптимизация производительности запросов FREETEXTTABLE.

Если этому параметру присвоено значение 1, то запросы FREETEXTTABLE, заданные с параметром top_n_by_rank, пользуются предварительно вычисленными рангами, которые хранятся в полнотекстовых каталогах.

Не поддерживается.

Вызов хранимой процедуры sp_fulltext_pendingchanges при обновлении ключевого столбца

Обновляется полнотекстовый ключевой столбец на одной строке в таблице, содержащей две строки, а затем выполняется хранимая процедура sp_fulltext_pendingchanges.

Отображаются обе строки.

Отображается только одна строка.

Встроенные функции

Встроенные функции с полнотекстовым оператором

Возвращает сообщение об ошибке.

Возвращает соответствующие строки.

sp_fulltext_database, хранимая процедура

Включение и отключение полнотекстового поиска при помощи хранимой процедуры using sp_fulltext_database.

Результаты для полнотекстовых запросов не возвращаются. Если полнотекстовый поиск в базе данных отключен, полнотекстовые операции запрещены.

Возвращает результаты полнотекстовых запросов. Полнотекстовые операции разрешены, даже если полнотекстовый поиск в базе данных отключен.

Стоп-слова, зависящие от локали

Зависящие от языкового стандарта варианты родительского языка (например, «Французский (Бельгия)» или «Французский (Канада)»).

Запросы для зависящих от языкового стандарта вариантов языков обрабатываются компонентами (средства разбиения по словам, парадигматические модули, стоп-слова) родительского языка. Например, компоненты для языка «Французский (Франция)» используются для синтаксического анализа языка «Французский (Бельгия)».

Стоп-слова для каждого идентификатора локали (LCID) должны добавляться явным образом. В частности, может потребоваться указать LCID для Бельгии, Канады и Франции.

Добавление парадигм в тезаурус

Применение тезауруса и словоформы (добавление парадигм).

После добавления слова в тезаурус для него автоматически создается парадигма.

Если при расширении необходима парадигматическая форма, ее необходимо добавить явным образом.

Путь и файловая группа полнотекстового каталога

Работа с полнотекстовыми каталогами.

Каждый полнотекстовый каталог имеет физический путь и входит в файловую группу. Он рассматривается как файл базы данных.

Полнотекстовый каталог является виртуальным объектом и не входит в файловую группу. Полнотекстовый каталог — это логическое понятие, обозначающее группу полнотекстовых индексов.

ПримечаниеПримечание

Инструкции DDL языка SQL Server 2005Transact-SQL, указывающие полнотекстовые каталоги, работают правильно.

sys.fulltext_catalogs

Использование столбцов path, data_space_id и file_id этого представления каталога.

Указанные столбцы возвращают конкретные значения.

Указанные столбцы возвращают значение NULL, поскольку теперь полнотекстовый каталог находится не в файловой системе.

sys.sysfulltextcatalogs

Использование столбца path этой устаревшей системной таблицы.

Возвращает путь к полнотекстовому каталогу в файловой системе.

Возвращает значение NULL, поскольку полнотекстовый каталог теперь находится не в файловой системе.

sp_help_fulltext_catalogs

sp_help_fulltext_catalogs_cursor

Использование столбца PATH этих устаревших хранимых процедур.

Возвращает путь к полнотекстовому каталогу в файловой системе.

Возвращает значение NULL, поскольку полнотекстовый каталог теперь находится не в файловой системе.

sp_help_fulltext_catalog_components

Использование столбца sp_help_fulltext_catalog_components этой хранимой процедуры.

Возвращает список всех компонентов (фильтров, разделителей слов и обработчиков протоколов), используемых для всех полнотекстовых каталогов в текущей базе данных.

Возвращает пустые строки.

DATABASEPROPERTYEX

Использование свойства IsFullTextEnabled.

Параметр IsFullTextEnabled указывает, включен ли полнотекстовый поиск в заданной базе данных.

Значение этого столбца не учитывается. Полнотекстовый поиск всегда включен для пользовательских баз данных.

См. также

Основные понятия

Изменения в функциях полнотекстового поиска

Компонент Full-Text Search (SQL Server)