sys.dm_fts_parser (Transact-SQL)
Область применения: SQL Server
Возвращает окончательный результат маркеризации после применения заданного средства разбиения слов, тезауруса и сочетания стоп-списков к входным данным строки запроса. Результат разметки эквивалентен выходным данным службы полнотекстового поиска для указанной строки запроса.
sys.dm_fts_parser
— это динамическая функция управления.
Синтаксис
sys.dm_fts_parser ( 'query_string' , lcid , stoplist_id , accent_sensitivity )
Аргументы
query_string
Запрос, который необходимо подвергнуть синтаксическому анализу. query_string может быть строковой цепочкой, поддерживающей синтаксис CONTAINS. Например, можно включить словоформы, тезаурус и логические операторы.
lcid
Идентификатор языкового стандарта (LCID) средства разбиения слов, который будет использоваться для синтаксического анализа query_string.
stoplist_id
Идентификатор списка стоп-слов, если таковой есть, используемый средством разбиения слов, определяемым lcid. stoplist_id имеет значение int. Если указать значение NULL, список стоп-слов не используется. Если указано значение 0, используется системный список стоп-слов.
Идентификатор списка стоп-слов уникален в пределах базы данных. Чтобы получить идентификатор списка стоп-списков для полнотекстового индекса в данной таблице, используйте представление каталога sys.fulltext_indexes .
accent_sensitivity
Логическое значение, управляющее полнотекстовым поиском с учетом или без учета диакритических знаков. accent_sensitivity бит с одним из следующих значений:
Значение | Чувствительность акцента ... |
---|---|
0 | Не учитывать Слова, совпадающие во всем, кроме диакритических знаков, рассматриваются как идентичные. |
1 | Конфиденциальные Слова, сходные по начертанию, но различающиеся диакритическими знаками, рассматриваются как разные. |
Примечание.
Чтобы просмотреть текущий параметр этого значения для полнотекстового каталога, выполните следующую инструкцию Transact-SQL: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');
Таблица возвращенной информации
Имя столбца | Тип данных | Description |
---|---|---|
keyword | varbinary(128) | Шестнадцатеричное представление данного ключевого слова, возвращенное средством разбиения по словам. Это представление используется для хранения ключевых слов в полнотекстовом индексе. Это значение не доступно для чтения, но полезно для связи заданного ключевого слова с выходными данными, возвращаемыми другими динамическими представлениями управления, которые возвращают содержимое полнотекстового индекса, например sys.dm_fts_index_keywords и sys.dm_fts_index_keywords_by_document. Примечание. 0xFF Представляет специальный символ, указывающий конец файла или набора данных. |
group_id | int | Содержит целочисленное значение, помогающее различить логическую группу, из которой был сформирован данный термин. Например, выражение Server AND DB OR FORMSOF(THESAURUS, DB)" формирует следующие значения group_id для английского языка.1. Сервер 2. База данных 3. База данных |
phrase_id | int | Содержит целочисленное значение, помогающее различать варианты альтернативных форм составных слов, формируемые средством разбиения по словам, таким средствам, как полнотекстовой поиск. Иногда составные слова (например, «multi-million») определяются средством разбиения по словам в нескольких альтернативных формах. Эти альтернативные формы (фразы) необходимо как-то различать. Например, строка multi-million формирует следующие значения phrase_id для английского языка.1 для multi 1 для million 2 для multimillion |
occurrence | int | Указывает расположение каждого термина в результате анализа. Например, для фразы SQL Server query processor вхождение будет содержать следующие значения вхождения терминов из фразы для английского языка.1 для SQL 2 для Server 3 для query 4 для processor |
special_term | nvarchar(4000) | Содержит сведения о характеристиках термина, выданного средством разбиения по словам, в том числе: - Точное совпадение - Шумное слово - Конец предложения - Конец абзаца - Конец главы |
display_term | nvarchar(4000) | Содержит немашинную (предназначенную для человека) форму ключевого слова. Как и в случае с функциями, предназначенными для доступа к содержимому полнотекстового индекса, этот отображаемый термин может не быть идентичным исходному термину в силу ограниченности денормализации. Однако он должен быть достаточно точным, чтобы позволить отличить его от исходных входных данных. |
expansion_type | int | Содержит сведения о природе расширения данного термина, в том числе: 0 = один регистр слова 2 = инлекциональное расширение 4 = расширение и замена Тезауруса Например, предположим, что тезаурус определяет слово run как расширение слова jog :<expansion> <sub>run</sub> <sub>jog</sub> </expansion> Термин FORMSOF (FREETEXT, run) формирует следующие выходные данные:run с expansion_type = 0runs с expansion_type = 2running с expansion_type = 2ran с expansion_type = 2jog с expansion_type = 4 |
source_term | nvarchar(4000) | Термин или фраза, из которой сформирован или создан в результате анализа данный термин. Например, запрос на получение '"word breakers" AND stemmers' следующих source_term значений на английском языке:word breakers для display_term word word breakers для display_term breakers stemmers для display_term stemmers |
Замечания
sys.dm_fts_parser
поддерживает синтаксис и функции полнотекстовых предикатов, таких как CONTAINS и FREETEXT, а также функции, такие как CONTAINSTABLE и FREETEXTTABLE.
Использование Юникода для синтаксического анализа специальных символов
При синтаксическом анализе строки sys.dm_fts_parser
запроса использует параметры сортировки базы данных, к которой подключены, если строка запроса не указана как Юникод. Следовательно, для строки не в формате Юникод, которая содержит специальные символы, такие как u или c, выходные данные могут оказаться непредвиденными, поскольку зависят от параметров сортировки базы данных. Чтобы обработать строку запроса независимо от параметров сортировки базы данных, префиксировать строку с N
помощью , то есть N'
query_string'
.
Дополнительные сведения см. в разделе C. Отображение выходных данных строки, содержащей специальные символы далее в этой статье.
Когда следует использовать sys.dm_fts_parser
sys.dm_fts_parser
может быть мощным в целях отладки. Некоторые важные варианты использования.
Понять, как данное средство разбиения по словам рассматривает указанные входные данные.
Если запросом были возвращены непредвиденные результаты, вероятной причиной может быть способ, используемый средством разбиения по словам для анализа и разбиения данных. С помощью
sys.dm_fts_parser
этого метода вы узнаете, что средство разбиения слов передается в полнотекстовый индекс. Кроме того, можно увидеть, какие термины являются стоп-словами, которые не выполняются в полнотекстовом индексе. Указывает, является ли термин стоп-словом для данного языка, зависит от того, находится ли он в списке стоп-слов, указанных значением stoplist_id , объявленным в функции.Флаг конфиденциальности акцента позволяет узнать, как средство разбиения слов анализирует входные данные, имея в виду сведения о конфиденциальности акцента.
Понять, как парадигматический модуль работает с данными входными данными.
Можно выяснить, как средство разбиения по словам и парадигматический модуль анализируют термин запроса и его парадигматические формы, указав запрос CONTAINS или CONTAINSTABLE, содержащий следующее предложение FORMSOF:
FORMSOF( INFLECTIONAL, query_term )
Результаты позволяют определить, какие термины передаются в полнотекстовый индекс.
Понять, как тезаурус расширяет или заменяет входные данные целиком или частично.
Также можно указать:
FORMSOF( THESAURUS, query_term )
Результаты этого запроса показывают, как взаимодействуют средство разбиения по словам и тезаурус при обработке термина запроса. Можно увидеть расширение или замены из тезауруса и определить результирующий запрос, который фактически выполняется в отношении полнотекстового индекса.
Если пользователь выдает следующие проблемы:
FORMSOF( FREETEXT, query_term )
Возможности инлекционных и тезаурусов происходят автоматически.
Помимо предыдущих сценариев использования, sys.dm_fts_parser
можно значительно понять и устранить многие другие проблемы с полнотекстовых запросов.
Разрешения
Требуется разрешение CREATE FULLTEXT CATALOG и права доступа к указанному списку стоп-слов.
Примеры
А. Отображение выходных данных заданного средства разбиения слов для ключевого слова или фразы
В следующем примере средство разбиения по словам для английского языка с кодом языка 1033, не имеющее списка стоп-слов, возвращает выходные данные для следующей строки запроса:
The Microsoft business analysis
Диакритические знаки не учитываются.
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0);
B. Отображение выходных данных заданного средства разбиения слов в контексте фильтрации списка стоп-списков
В следующем примере средство разбиения по словам для английского языка с кодом языка 1033, имеющее список английских стоп-слов с идентификатором 77, возвращает выходные данные для следующей строки запроса:
"The Microsoft business analysis" OR "MS revenue"
Диакритические знаки не учитываются.
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" OR " MS revenue" ', 1033, 77, 0);
C. Отображение выходных данных строки, содержащей специальные символы
В следующем примере для синтаксического анализа строки на французском языке используется формат Юникод:
français
В этом примере указывается код языка для французского языка, 1036
, и идентификатор стоп-слов, определенных пользователем, 5
. Диакритические знаки учитываются.
SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);
См. также
- Полнотекстовый поиск и динамические административные представления и функции семантического поиска (Transact-SQL)
- Компонент Full-text Search
- Защищаемые объекты