Критические изменения полнотекстового поиска в 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. |
Отображаются обе строки. |
Отображается только одна строка. |
Встроенные функции |
Встроенные функции с полнотекстовым оператором |
Возвращает сообщение об ошибке. |
Возвращает соответствующие строки. |
Включение и отключение полнотекстового поиска при помощи хранимой процедуры using sp_fulltext_database. |
Результаты для полнотекстовых запросов не возвращаются. Если полнотекстовый поиск в базе данных отключен, полнотекстовые операции запрещены. |
Возвращает результаты полнотекстовых запросов. Полнотекстовые операции разрешены, даже если полнотекстовый поиск в базе данных отключен. |
|
Стоп-слова, зависящие от языкового стандарта |
Зависящие от языкового стандарта варианты родительского языка (например, «Французский (Бельгия)» или «Французский (Канада)»). |
Запросы для зависящих от языкового стандарта вариантов языков обрабатываются компонентами (средства разбиения по словам, парадигматические модули, стоп-слова) родительского языка. Например, компоненты для языка «Французский (Франция)» используются для синтаксического анализа языка «Французский (Бельгия)». |
Стоп-слова для каждого языкового стандарта (LCID) должны добавляться явным образом. В частности, может потребоваться указать LCID для Бельгии, Канады и Франции. |
Добавление парадигм в тезаурус |
Применение тезауруса и словоформы (добавление парадигм). |
После добавления слова в тезаурус для него автоматически создается парадигма. |
Если при расширении необходима парадигматическая форма, ее необходимо добавить явным образом. |
Путь и файловая группа полнотекстового каталога |
Работа с полнотекстовыми каталогами. |
Каждый полнотекстовый каталог имеет физический путь и входит в файловую группу. Он рассматривается как файл базы данных. |
Полнотекстовый каталог является виртуальным объектом и не входит в файловую группу. Полнотекстовый каталог — это логическое понятие, обозначающее группу полнотекстовых индексов. ![]()
DDL-инструкции языка SQL Server 2005Transact-SQL, указывающие полнотекстовые каталоги, работают правильно.
|
Использование в этом представлении каталога столбцов path, data_space_id и file_id. |
Указанные столбцы возвращают конкретные значения. |
Указанные столбцы возвращают значение NULL, поскольку теперь полнотекстовый каталог находится не в файловой системе. |
|
Использование в этой устаревшей системной таблице столбца PATH. |
Возвращает путь к полнотекстовому каталогу в файловой системе. |
Возвращает значение NULL, поскольку полнотекстовый каталог теперь находится не в файловой системе. |
|
Использование в этих устаревших хранимых процедурах столбца PATH. |
Возвращает путь к полнотекстовому каталогу в файловой системе. |
Возвращает значение NULL, поскольку полнотекстовый каталог теперь находится не в файловой системе. |
|
Использование хранимой процедуры sp_help_fulltext_catalog_components. |
Возвращает список всех компонентов (фильтров, разделителей слов и обработчиков протоколов), используемых для всех полнотекстовых каталогов в текущей базе данных. |
Возвращает пустые строки. |
|
Использование свойства IsFullTextEnabled. |
Параметр IsFullTextEnabled указывает, включен ли полнотекстовый поиск в заданной базе данных. |
Значение этого столбца не учитывается. Полнотекстовый поиск всегда включен для пользовательских баз данных. |
Журнал изменений
Обновленное содержимое |
---|
В таблицу добавлена строка о функции FREETEXT. |