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


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

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

Критические изменения

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

Возможность

Сценарий

SQL Server 2005

SQL Server 2008

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

Полнотекстовый ключ — это определяемый пользователем тип 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 не возвращает фантомных записей.

FREETEXT или FREETEXTTABLE

Поиск точной фразы.

Если строка поиска (freetext_string) заключена в двойные кавычки, то морфологический поиск и совпадение с тезаурусом не будут выполняться; строка возвращает только точные совпадения, как при поиске фразы. Например, предикат FREETEXT со строкой "fast ships" возвратит только строки, содержащие текст «fast ships», и не возвратит фразу «ship your package fast».

Теперь в предикатах FREETEXT и FREETEXTTABLE не допускается поиск фраз. Эти предикаты выполняют морфологический поиск и совпадение с тезаурусом независимо от одиночных или двойных кавычек, в которые заключается строка поиска. Например, поиск строки "fast ships" возвратит и текст «fast ships», и «ship your package fast».

Для поиска фраз используйте предикат CONTAINS или CONTAINSTABLE.

ItemCount

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

Помимо проиндексированных документов, в число ItemCount входят пустые документы или документы, содержащие значение NULL.

В число 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.

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

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

DATABASEPROPERTY и DATABASEPROPERTYEX

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

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

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

Журнал изменений

Обновленное содержимое

В таблицу добавлена строка о функции FREETEXT.