Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Описывает способ включения или отключения статистического семантического индексирования в выбранных столбцах, содержащих документы или текст.
Статистический семантический поиск использует индексы, созданные Full-Text Search, и создает дополнительные индексы. Из-за этой зависимости от полнотекстового поиска приходится создавать при определении нового или изменении существующего полнотекстового индекса новый семантический индекс. Вы можете создать новый семантический индекс с помощью инструкций Transact-SQL или с помощью мастера индексирования Full-Text и других диалоговых окон в SQL Server Management Studio, как описано в этом разделе.
Создание семантического индекса
Требования и ограничения для создания семантического индекса
Можно создать индекс для любых объектов базы данных, поддерживаемых для полнотекстового индексирования, включая таблицы и индексированные представления.
Прежде чем можно будет включить семантическое индексирование для определенных столбцов, должны быть выполнены следующие предварительные условия:
Для базы данных должен существовать полнотекстовый каталог.
Таблица должна содержать полнотекстовый индекс.
Выбранные столбцы должны быть включены в полнотекстовый индекс.
Можно создать и включить эти требования одновременно.
Можно создать семантический индекс по столбцам с любым типом данных, поддерживаемым для полнотекстового индексирования. Дополнительные сведения см. в разделе Создание полнотекстовых индексов и управление ими.
Можно указать любой тип документа, поддерживаемый для полнотекстового индексирования столбцов
varbinary(max)
. Дополнительные сведения см. в разделе "Практическое руководство. Определение типов документов, которые можно индексировать в этом разделе".При семантическом индексировании для выбранных столбцов создаются индексы двух типов — индекс ключевых фраз и индекс подобия документов. При включении семантического индексирования нельзя выбрать только один тип индекса или другой. Однако можно запрашивать эти индексы по отдельности. Дополнительные сведения см. в разделе Поиск ключевых фраз в документах с использованием семантического поиска и Поиск похожих и связанных документов с использованием семантического поиска.
Если явно не указать LCID для семантического индекса, то для семантического индексирования используются только первичный язык и соответствующая статистика языка.
Если указать язык для столбца, для которого языковая модель недоступна, создание индекса завершается ошибкой и возвращает сообщение об ошибке.
Практическое руководство. Создание семантического индекса при отсутствии Full-Text индекса
При создании полнотекстового индекса с помощью инструкции CREATE FULLTEXT INDEX можно включить семантический индексирование на уровне столбца, указав ключевое слово STATISTICAL_SEMANTICS в составе определения столбца. Семантическое индексирование также можно включить при создании полнотекстового индекса с помощью мастера полнотекстового индексирования.
Создание семантического индекса с помощью Transact-SQL
Вызовите инструкцию CREATE FULLTEXT INDEX и укажите STATISTICAL_SEMANTICS для каждого столбца, на котором требуется создать семантический индекс. Дополнительные сведения обо всех параметрах этой инструкции см. в статье CREATE FULLTEXT INDEX (Transact-SQL).
Пример 1. Создание уникального индекса, полнотекстового индекса и семантического индекса
В следующем примере создается полнотекстовый каталог по умолчанию , ft. Затем в примере создается уникальный индекс в столбце JobCandidateID таблицы HumanResources.JobCandidate примера базы данных AdventureWorks2012. Данный уникальный индекс используется в качестве ключевого столбца полнотекстового индекса. Затем в примере создается полнотекстовый индекс и семантический индекс в столбце Resume .
CREATE FULLTEXT CATALOG ft AS DEFAULT
GO
CREATE UNIQUE INDEX ui_ukJobCand
ON HumanResources.JobCandidate(JobCandidateID)
GO
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate
(Resume
Language 1033
Statistical_Semantics
)
KEY INDEX JobCandidateID
WITH STOPLIST = SYSTEM
GO
Пример 2. Создание полнотекстового и семантического индекса для нескольких столбцов с задержкой заполнения индекса
В следующем примере создается полнотекстовый каталог documents_catalog в примере базы данных AdventureWorks2012. Следующий пример создает полнотекстовый индекс, который использует этот новый каталог. Полнотекстовый индекс создается на столбцахTitle, DocumentSummary и Document таблицы Production.Document, а семантический индекс создается только в столбце Document. Этот полнотекстовый индекс использует только что созданный полнотекстовый каталог и существующий уникальный ключевой индекс , PK_Document_DocumentID. Как рекомендуется, этот ключ индекса создается в целочисленном столбце DocumentID. В примере указан код (LCID) для английского языка 1033, который является языком данных в столбцах.
В примере также указано, что отслеживание изменений отключено и заполнение отсутствует. Позже в нерабочие часы в примере используется инструкция ALTER FULLTEXT INDEX для запуска полной совокупности нового индекса и включения автоматического отслеживания изменений.
CREATE FULLTEXT CATALOG documents_catalog
GO
CREATE FULLTEXT INDEX ON Production.Document
(
Title
Language 1033,
DocumentSummary
Language 1033,
Document
TYPE COLUMN FileExtension
Language 1033
Statistical_Semantics
)
KEY INDEX PK_Document_DocumentID
ON documents_catalog
WITH CHANGE_TRACKING OFF, NO POPULATION
GO
Позже, в часы с наименьшей загрузкой, выполняется заполнение индекса:
ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO
GO
Создание семантического индекса с помощью SQL Server Management Studio
Запустите мастер полнотекстового индексирования и включите параметр Статистическая семантика на странице Выбор столбцов таблицы для каждого столбца, на котором требуется создать семантический индекс. Дополнительные сведения, в том числе о запуске мастера полнотекстового индексирования, см. в разделе Использование мастера полнотекстового индексирования.
Практическое руководство. Создание семантического индекса при наличии существующего индекса Full-Text
Вы можете добавить семантический индекс при изменении существующего полнотекстового индекса с помощью инструкции ALTER FULLTEXT INDEX . Вы также можете добавить семантическое индексирование, используя различные диалоговые окна в SQL Server Management Studio.
Добавление семантического индекса с помощью Transact-SQL
Вызовите инструкцию ALTER FULLTEXT INDEX с параметрами, описанными ниже для каждого столбца, на котором требуется добавить семантический индекс. Дополнительные сведения обо всех параметрах этой инструкции см. в разделе ALTER FULLTEXT INDEX (Transact-SQL).
Полнотекстовые и семантические индексы перезаполняются после вызова ALTER, если вы не указали иную настройку.
Чтобы добавить полнотекстовое индексирование только в столбец, используйте синтаксис ADD .
Чтобы добавить полнотекстовый и семантический индексирование в столбец, используйте синтаксис ADD с параметром STATISTICAL_SEMANTICS .
Чтобы добавить семантический индексирование в столбец, который уже включен для полнотекстового индексирования, используйте параметр ADD STATISTICAL_SEMANTICS . Семантическое индексирование можно добавить только в один столбец в одной инструкции ALTER.
Пример. Добавление семантического индексирования в столбец с полнотекстовым индексированием
В следующем примере изменяется существующий полнотекстовый индекс таблицы Production.Document в базе данных AdventureWorks2012. В примере добавляется семантический индекс в столбце Document таблицы Production.Document , который уже имеет полнотекстовый индекс. В примере указывается, что индекс не будет заполняться автоматически.
ALTER FULLTEXT INDEX ON Production.Document
ALTER COLUMN Document
ADD Statistical_Semantics
WITH NO POPULATION
GO
Добавление семантического индекса с помощью SQL Server Management Studio
Изменение столбцов, для которых включен семантический или полнотекстовый индекс, выполняется на странице Столбцы полнотекстового индекса диалогового окна Свойства полнотекстового индекса . Дополнительные сведения см. в разделе Управление полнотекстовыми индексами.
Требования и ограничения для изменения существующего индекса
Невозможно изменить существующий индекс, пока выполняется заполнение индекса. Дополнительные сведения о наблюдении за ходом заполнения индекса см. в разделе Мониторинг семантического поиска и управление им.
Невозможно добавить индексирование в столбец и изменить или удалить индексирование для одного столбца в одном вызове инструкции ALTER FULLTEXT INDEX .
Удаление семантического индекса
Как удалить семантический индекс
При изменении существующего полнотекстового индекса с помощью инструкции ALTER FULLTEXT INDEX можно удалить семантический индекс. Вы также можете удалить семантический индексирование с помощью различных диалоговых окон в SQL Server Management Studio.
Удаление семантического индекса с помощью Transact-SQL
- Чтобы удалить семантический индекс из столбца или столбцов, используйте команду ALTER FULLTEXT INDEX с параметром ALTER COLUMNcolumn_nameDROP STATISTICAL_SEMANTICS. Индексирование можно удалить из нескольких столбцов в одной инструкции ALTER .
```sql
USE database_name
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP STATISTICAL_SEMANTICS
GO
```
Чтобы удалить полнотекстовые и семантические индексы в столбце, вызовите инструкцию ALTER FULLTEXT INDEX с параметром ALTER COLUMNcolumn_nameDROP.
USE database_name GO ALTER FULLTEXT INDEX ALTER COLUMN column_name DROP GO
Удаление семантического индекса с помощью SQL Server Management Studio
Изменение столбцов, для которых включен семантический или полнотекстовый индекс, выполняется на странице Столбцы полнотекстового индекса диалогового окна Свойства полнотекстового индекса . Дополнительные сведения см. в разделе Управление полнотекстовыми индексами.
Требования и ограничения для удаления семантического индекса
Невозможно убрать полнотекстовый индекс из столбца, сохраняя семантический индекс. Для получения результатов о подобии документов семантическое индексирование основывается на полнотекстовом индексировании.
Невозможно указать параметр NO POPULATION при удалении семантического индексирования из последнего столбца в таблице, для которой была включена семантическая индексация. Для удаления ранее индексированных результатов требуется цикл популяции.
Проверка включения семантического поиска в объектах базы данных
Практическое руководство. Проверка включения семантического поиска в объектах базы данных
Включен ли семантический поиск для базы данных?
Запросите свойство IsFullTextEnabled функции метаданных DATABASEPROPERTYEX (Transact-SQL).
Возвращаемое значение 1 указывает, что полнотекстовый поиск и семантический поиск включены для базы данных; Возвращаемое значение 0 указывает, что они не включены.
SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled')
GO
Включена ли семантическая поиск для таблицы?
Запросите свойство TableFullTextSemanticExtraction функции метаданных OBJECTPROPERTYEX (Transact-SQL).
Возвращаемое значение 1 указывает, что семантический поиск включен для таблицы; Возвращаемое значение 0 указывает, что он не включен.
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction')
GO
Включен ли семантический поиск для столбца?
Чтобы определить, включен ли семантический поиск для определенного столбца, выполните следующие действия.
Запросите свойство StatisticalSemantics функции метаданных COLUMNPROPERTY (Transact-SQL).
Возвращаемое значение 1 указывает, что семантический поиск включен для столбца; Возвращаемое значение 0 указывает, что он не включен.
SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics') GO
Запросите представление каталога sys.fulltext_index_columns (Transact-SQL) для получения сведений о полнотекстовом индексе.
Значение 1 в столбце statistical_semantics указывает, что указанный столбец включен для семантического индексирования в дополнение к полнотекстовой индексации.
SELECT * FROM sys.fulltext_index_columns WHERE object_id = OBJECT_ID('table_name') GO
В обозреватель объектов в Management Studio щелкните правой кнопкой мыши столбец и выберите "Свойства". На странице Общие диалогового окна Свойства столбца проверьте значение свойства Статистическая семантика .
Значение True указывает, что для данного столбца, кроме полнотекстового индексирования, включено и семантическое индексирование.
Определение того, что можно индексировать для семантического поиска
Практическое руководство. Проверка поддерживаемых языков для семантического поиска
Это важно
Для семантического индексирования поддерживается меньше языков, чем для полнотекстового индексирования. В результате могут существовать столбцы, индексируемые для полнотекстового поиска, но не для семантического поиска.
Запросите представление каталога sys.fulltext_semantic_languages (Transact-SQL).
SELECT * FROM sys.fulltext_semantic_languages
GO
Для семантического индексирования поддерживаются следующие языки. Этот список представляет выходные данные представления каталога sys.fulltext_semantic_languages (Transact-SQL), упорядоченные по LCID.
Язык | LCID (Идентификатор языкового стандарта) |
---|---|
Немецкий | 1031 |
Английский (США) | 1033 |
Французский | 1036 |
Итальянский | 1040 |
Португальский (Бразилия) | 1046 |
Русский | 1049 |
Шведский | 1053 |
Английский (Соединенное Королевство) | 2057 |
Португальский (Португалия) | 2070 |
испанский | 3082 |
Практическое руководство. Определение типов документов, которые можно индексировать
Выполните запрос к представлению каталога sys.fulltext_document_types (Transact-SQL).
Если тип документа, который требуется индексировать, отсутствует в списке поддерживаемых типов, может потребоваться найти, скачать и установить дополнительные фильтры. Дополнительные сведения см. в статье Просмотр или изменение зарегистрированных фильтров или разделителей слов.
Рекомендуется создать отдельную файловую группу для Full-Text и семантических индексов.
Если выделение места на диске является серьезной проблемой, рассмотрите возможность создания отдельных файловых групп для полнотекстового и семантического индексов. Семантические индексы создаются в той же файловой группе, что и полнотекстовый индекс. Полностью заполненный семантический индекс может содержать большой объем данных.
Проблема: поиск по конкретному столбцу не возвращает результатов
Указан ли LCID, отличный от Юникода, для языка Юникода?
Имеется возможность включить семантическое индексирование на неуникодных типах столбцов с помощью LCID для языка, который имеет только слова в Юникоде, например, LCID 1049 для русского языка. В этом случае результаты никогда не будут возвращены из семантических индексов в этом столбце.