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


Улучшение полнотекстового поиска

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

В этом разделе рассматриваются следующие аспекты обновления полнотекстового поиска:

Обновление экземпляра сервера

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

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

Хост демона фильтрации
Узлы демона полнотекстового фильтра — это процессы, которые безопасно загружают и управляют внешними расширяемыми компонентами, используемыми для индексации и запросов, такими как инструменты разбора по словам, стеммеры и фильтры, не нарушая целостности полнотекстового процессора. Экземпляр сервера использует многопоточный процесс для всех многопоточных фильтров и однопоточный процесс для однопоточных фильтров.

Замечание

SQL Server 2008 ввела служебную учетную запись для запуска FDHOST (MSSQLFDLauncher). Эта служба распространяет сведения об учетной записи службы в процессы управляющей программы фильтра определенного экземпляра SQL Server. Сведения о настройке учетной записи службы см. в разделе Настройка учетной записи службы средства запуска управляющей программы полнотекстовой фильтрации.

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

Замечание

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

Возможности обновления Full-Text

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

Импорт
Полнотекстовые каталоги импортируются. Обычно импорт проходит значительно быстрее, чем реконструкция. Например, если используется только один ЦП, то импорт выполняется в 10 раз быстрее, чем перестроение. Однако импортированный полнотекстовый каталог не использует новые средства разбиения слов, установленные с последней версией SQL Server. Для обеспечения согласованности результатов запроса необходимо перестроить полнотекстовые каталоги повторно.

Замечание

Перестроение может выполняться в многопоточном режиме; если доступно более 10 процессоров, то перестроение может выполниться быстрее импорта, если будет разрешено использовать все процессоры.

Если полнотекстовый каталог недоступен, перестраиваются связанные полнотекстовые индексы. Этот параметр доступен только для баз данных SQL Server 2005.

Дополнительные сведения о влиянии импорта полнотекстового индекса см. в подразделе «Замечания по выбору режима полнотекстового обновления» далее в этом разделе.

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

Сброс
Полнотекстовые каталоги обновляются. При обновлении с SQL Server 2005 файлы полнотекстового каталога удаляются, но метаданные для полнотекстовых каталогов и полнотекстовых индексов сохраняются. После обновления для всех полнотекстовых индексов отключается отслеживание изменений и сканирование не запускается автоматически. После завершения обновления каталог останется пустым, пока вы вручную не заполните его полностью.

Рекомендации по выбору варианта обновления Full-Text

При выборе режима обновления необходимо учитывать следующие соображения.

  • Требуется ли согласованность в результатах запроса?

    SQL Server 2014 устанавливает новые средства разбиения слов для использования Full-Text и семантического поиска. Средства разбиения по словам используются как во время индексирования, так и при выполнении запросов. Если не выполнить перепостроение полнотекстовых каталогов, результаты поиска могут быть несогласованными. Если вы выдаете полнотекстовый запрос, который ищет фразу, которая разбивается по-разному с помощью средства разбиения слов в предыдущей версии SQL Server и текущего средства разбиения слов, документ или строка, содержащая фразу, может не быть извлечена. Это связано с тем, что индексированные фразы были разбиты с помощью логики, которая не соответствует логике, используемой в запросе. Решение заключается в том, чтобы заполнить полнотекстовые каталоги повторно (перестроить их) с помощью новых средств разбиения по словам, чтобы при индексировании и выполнении запросов использовалась одинаковая логика. Вы можете выбрать опцию «Перестроить» для выполнения этой задачи, или можете перестроить вручную после выбора опции «Импорт».

  • Были ли полнотекстовые индексы построены в целочисленных столбцах полнотекстовых ключей?

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

    Замечание

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

  • Каков приоритет для перевода вашего сервера в режим онлайн?

    Импорт или перестроение отнимает много ресурсов процессора, что задерживает обновление остальных частей экземпляра сервера и перевод его в режим «в сети». Если важно перевести экземпляр сервера в режим «в сети» как можно скорее, а пользователь способен выполнить после обновления заполнение вручную, то целесообразно будет использовать режим Сброс .

Обеспечение согласованности результатов запроса после импорта индекса Full-Text SQL Server 2005

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

  • Выполнить повторное создание полнотекстового каталога, содержащего полнотекстовый индекс (ALTER FULLTEXT CATALOGимя_каталога REBUILD).

  • Выполните команду FULL POPULATION для полнотекстового индекса (ALTER FULLTEXT INDEX ON имя_таблицы START FULL POPULATION).

Дополнительные сведения о модулях разбиения слов см. в разделе Настройка и управление разбиением на слова и стеммерами для поиска.

Обновление файлов Noise-Word до стоп-листов

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

После обновления с SQL Server 2005:

  • Если вы никогда не добавляли, не изменяли или не удаляли стоп-слова в установке SQL Server 2005, системный стоплист должен удовлетворять вашим потребностям.

  • Если файлы шумных слов были изменены в SQL Server 2005, эти изменения теряются во время обновления. Чтобы повторно создать эти обновления, необходимо вручную воспроизвести эти изменения в соответствующем стоплисте SQL Server 2008. Дополнительные сведения см. в разделе ALTER FULLTEXT STOPLIST (Transact-SQL).

  • Если вы не хотите применять стоп-слова к полнотекстовых индексам (например, если вы удалили или стерли файлы шум-слов в установке SQL Server 2005), необходимо отключить список стоп-слов для каждого обновленного полнотекстового индекса. Выполните следующую инструкцию Transact-SQL (заменив базу данных именем обновленной базы данных и таблицы именем таблицы):

    Use database;   
    ALTER FULLTEXT INDEX ON table  
       SET STOPLIST OFF;  
    GO  
    

    Предложение STOPLIST OFF удаляет фильтрацию по стоп-словам, таблица будет заполняться без фильтрации слов, считающихся шумом.

Резервные копии и импортированные каталоги Full-Text

Для полнотекстовых каталогов, которые перестраиваются или сбрасываются при обновлении (а также для новых полнотекстовых каталогов), данный каталог является логическим понятием и не размещается в файловой группе. Таким образом, чтобы создать резервную копию полнотекстового каталога в SQL Server 2014, необходимо определить каждую файловую группу, содержащую полнотекстовый индекс каталога и резервную копию каждого из них, по одному. Дополнительные сведения см. в разделе Создание резервных копий и восстановление полнотекстовых каталогов и индексов.

Для полнотекстовых каталогов, импортированных из SQL Server 2005, полнотекстовый каталог по-прежнему является файлом базы данных в собственной файловой группе. Процесс резервного копирования SQL Server 2005 для полнотекстовых каталогов по-прежнему применяется, за исключением того, что служба MSFTESQL не существует в SQL Server 2014. Сведения о процессе SQL Server 2005 см. в статье "Резервное копирование и восстановление каталогов Full-Text" в электронной документации по SQL Server 2005.

Перенос индексов Full-Text при обновлении базы данных до SQL Server 2014

Файлы базы данных и полнотекстовые каталоги из предыдущей версии SQL Server можно обновить до существующего экземпляра сервера SQL Server 2014 с помощью подключения, восстановления или мастера копирования базы данных. Полнотекстовые индексы SQL Server 2005, если имеются, импортируются, сбрасываются или перестраиваются. Свойство сервера upgrade_option определяет, какой из режимов обновления полнотекстового поиска будет использоваться экземпляром сервера при обновлении базы данных.

После присоединения, восстановления или копирования любой базы данных SQL Server 2005 в SQL Server 2014 база данных становится доступной немедленно и затем автоматически обновляется. В зависимости от объема индексируемых данных процесс импорта может занять несколько часов, а перестроение — до десяти раз дольше. Обратите внимание, что если при обновлении выбран режим «Импортировать», а полнотекстовый каталог недоступен, то связанные с ним полнотекстовые индексы будут перестроены.

Чтобы изменить поведение полнотекстового апгрейда на экземпляре сервера

Рекомендации по восстановлению каталога Full-Text SQL Server 2005 в SQL Server 2014

Одним из способов обновления полнотекстовых данных из базы данных SQL Server 2005 до SQL Server 2014 является восстановление полной резервной копии базы данных до SQL Server 2014.

При импорте полнотекстового каталога SQL Server 2005 можно создать резервную копию и восстановить базу данных и файл каталога. Поведение совпадает с поведением в SQL Server 2005:

  • В полную резервную копию базы данных будет включен полнотекстовый каталог. Чтобы ссылаться на полнотекстовый каталог, используйте его имя файла SQL Server 2005, sysft_+catalog-name.

  • Если полнотекстовый каталог находится в режиме «вне сети», то резервное копирование завершится ошибкой.

Дополнительные сведения о резервном копировании и восстановлении полнотекстовых каталогов SQL Server 2005 см. в разделах "Резервное копирование и восстановление каталогов Full-Text" и "Резервное копирование и восстановление файлов и каталогов Full-Text" в электронной документации для SQL Server 2005.

После восстановления базы данных в SQL Server 2014 для полнотекстового каталога будет создан новый файл базы данных. По умолчанию данный файл имеет имя ftrow_имя-каталога.ndf. Например, если ваше имя каталога это cat1, то имя по умолчанию файла базы данных SQL Server 2014 будет ftrow_cat1.ndf. Но если имя по умолчанию уже используется в целевом каталоге, новый файл базы данных будет назван ftrow_имя-каталога{GUID}.ndf(где GUID — это глобальный уникальный идентификатор нового файла).

После импорта каталогов обновляются представления sys.database_files и sys.master_files: удаляются записи каталога и устанавливается значение NULL для столбца path (путь) в sys.fulltext_catalogs .

Создание резервной копии базы данных

Восстановление резервной копии базы данных

Пример

В следующем примере используется предложение MOVE в инструкции RESTORE для восстановления базы данных SQL Server 2005 с именем ftdb1. Файлы базы данных, журналов и каталогов SQL Server 2005 перемещаются в новые расположения на экземпляре сервера SQL Server 2014 следующим образом:

  • Файл базы данных ftdb1.mdfперемещается по адресу C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf.

  • Файл журнала ftdb1_log.ldfперемещается в каталог журналов на диске журналов: log_drive:\log_directory\ftdb1_log.ldf.

  • Файлы каталогов, соответствующие каталогу sysft_cat90 , перемещаются по адресу C:\temp. После того как был выполнен импорт полнотекстовых каталогов, они будут автоматически размещены в файле базы данных «C:\ftrow_sysft_cat90.ndf», а каталог «C:\temp» будет удален.

RESTORE DATABASE [ftdb1] FROM  DISK = N'C:\temp\ftdb1.bak' WITH  FILE = 1,  
   MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',  
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',  
    MOVE N'sysft_cat90' TO N'C:\temp';  

Присоединение базы данных SQL Server 2005 к SQL Server 2014

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

Состояние каждого присоединенного полнотекстового каталога в SQL Server 2014 совпадает с тем, что при отключении базы данных от SQL Server 2005. Если любой полнотекстовый индекс был приостановлен операцией отсоединения, его пополнение возобновляется в SQL Server 2014, и полнотекстовый индекс становится доступным для полнотекстового поиска.

Если SQL Server 2014 не может найти полнотекстовый файл каталога или если полнотекстовый файл был перемещен во время операции присоединения без указания нового расположения, поведение зависит от выбранного параметра полнотекстового обновления. Если был выбран режим обновления полнотекстового поиска Импорт или Перестроение, то присоединенный полнотекстовый каталог будет перестроен. Если был выбран режим обновления полнотекстового поиска Сброс, то присоединенный полнотекстовый каталог будет сброшен.

Дополнительные сведения об отключении и подключении базы данных см. в статьях Отсоединение и подключение базы данных (SQL Server), CREATE DATABASE (SQL Server Transact-SQL), sp_attach_db и sp_detach_db (Transact-SQL).

См. также

Начало работы с компонентом Full-Text Search
Настройка и управление разделителями слов и стеммерами для поиска
Настройка и управление фильтрами для поиска