Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
База данных SQL в Microsoft Fabric
Возвращает окончательный результат маркеризации после применения заданного средства разбиения слов, тезауруса и сочетания стоп-списков к входным данным строки запроса. Результат разметки эквивалентен выходным данным службы полнотекстового поиска для указанной строки запроса.
sys.dm_fts_parser — это динамическая функция управления.
Syntax
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— интеллект. Если указать 'NULL', стоп-лист не используется. Если указать 0, используется система STOPLIST .
Идентификатор списка стоп-слов уникален в пределах базы данных. Чтобы получить идентификатор списка стоп-списков для полнотекстового индекса в данной таблице, используйте представление каталога sys.fulltext_indexes .
accent_sensitivity
Логическое значение, управляющее полнотекстовым поиском с учетом или без учета диакритических знаков. accent_sensitivity бит с одним из следующих значений:
| Ценность | Чувствительность акцента ... |
|---|---|
| 0 | Не учитывать Слова, совпадающие во всем, кроме диакритических знаков, рассматриваются как идентичные. |
| 1 | Чувствительные Слова, сходные по начертанию, но различающиеся диакритическими знаками, рассматриваются как разные. |
Note
Чтобы просмотреть текущий параметр этого значения для полнотекстового каталога, выполните следующую инструкцию Transact-SQL: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');
Таблица возвращена
| Название столбца | Тип данных | Description |
|---|---|---|
keyword
1 |
varbinary(128) | Шестнадцатеричное представление данного ключевого слова, возвращенное средством разбиения по словам. Это представление используется для хранения ключевых слов в полнотекстовом индексе. Это значение не читается человеком, но полезно для связи заданного ключевого слова с результатом, возвращаемым другими динамичными управленческими представлениями, возвращающими содержимое полнотекстового индекса, такими как sys.dm_fts_index_keywords и sys.dm_fts_index_keywords_by_document. |
group_id |
int | Содержит целочисленное значение, помогающее различить логическую группу, из которой был сформирован данный термин. Например, Server AND DB OR FORMSOF(THESAURUS, DB) на английском языке получаются следующие group_id значения:1: Сервер2: DB3: DB |
phrase_id |
int | Содержит целочисленное значение, помогающее различать варианты альтернативных форм составных слов, формируемые средством разбиения по словам, таким средствам, как полнотекстовой поиск. Иногда составные слова (например, «multi-million») определяются средством разбиения по словам в нескольких альтернативных формах. Эти альтернативные формы (фразы) необходимо как-то различать. Например, multi-million на английском языке получаются следующие phrase_id значения:1 для multi1 для million2 для multimillion |
occurrence |
int | Указывает расположение каждого термина в результате анализа. Например, для фразы SQL Server query processor встреча будет содержать следующие значения вхождения для терминов в фразе, на английском языке:1 для SQL2 для Server3 для query4 для 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_termwordword breakers
для display_termbreakersstemmers
для display_termstemmers |
10xFF обозначает специальный символ, указывающий на конец файла или набора данных.
Замечания
sys.dm_fts_parserподдерживает синтаксис и функции полнотекстовых предикатов, таких как CONTAINS и FREETEXT, а также функции, такие как CONTAINSTABLE и FREETEXTTABLE.
Использование Юникода для синтаксического анализа специальных символов
Когда вы анализируете строку запроса, sys.dm_fts_parser используется сравнение базы данных, к которой вы подключены, если только вы не указали строку запроса как Unicode. Следовательно, для строки не в формате Юникод, которая содержит специальные символы, такие как u или c, выходные данные могут оказаться непредвиденными, поскольку зависят от параметров сортировки базы данных. Чтобы обработать строку запроса независимо от сбора базы данных, префикс строки будет N, то есть N'<query_string>'.
Дополнительные сведения см. в разделе C. Отображение выходных данных строки, содержащей специальные символы далее в этой статье.
Когда следует использовать sys.dm_fts_parser
sys.dm_fts_parser может быть мощным в целях отладки. Некоторые важные варианты использования.
Понять, как данное средство разбиения по словам рассматривает указанные входные данные.
Если запросом были возвращены непредвиденные результаты, вероятной причиной может быть способ, используемый средством разбиения по словам для анализа и разбиения данных. С помощью
sys.dm_fts_parserэтого метода вы узнаете, что средство разбиения слов передается в полнотекстовый индекс. Кроме того, можно увидеть, какие термины являются стоп-словами, которые не выполняются в полнотекстовом индексе. Является ли термин стопвордом для данного языка, зависит от того, входит ли он в стоп-лист, указанный значением stoplist_id , объявленным в этой функции.Флаг конфиденциальности акцента позволяет узнать, как средство разбиения слов анализирует входные данные, имея в виду сведения о конфиденциальности акцента.
Понять, как парадигматический модуль работает с данными входными данными.
Вы можете узнать, как словопрерывающий и стемер разбирают термин запроса и его формы стемминга, указав a
CONTAINSилиCONTAINSTABLEзапрос, содержащий следующееFORMSOFпредложение:FORMSOF ( INFLECTIONAL, <query_term> )Результаты позволяют определить, какие термины передаются в полнотекстовый индекс.
Понять, как тезаурус расширяет или заменяет входные данные целиком или частично.
Также можно указать:
FORMSOF ( THESAURUS, <query_term> )Результаты этого запроса показывают, как взаимодействуют средство разбиения по словам и тезаурус при обработке термина запроса. Можно увидеть расширение или замены из тезауруса и определить результирующий запрос, который фактически выполняется в отношении полнотекстового индекса.
Если пользователь выдает следующие проблемы:
FORMSOF ( FREETEXT, <query_term> )Возможности инлекционных и тезаурусов происходят автоматически.
Помимо предыдущих сценариев использования, sys.dm_fts_parser можно значительно понять и устранить многие другие проблемы с полнотекстовых запросов.
Permissions
Требуется CREATE FULLTEXT CATALOG разрешение и права доступа к указанному стоп-листу.
Examples
А. Отображение выходных данных заданного средства разбиения слов для ключевого слова или фразы
В следующем примере средство разбиения по словам для английского языка с кодом языка 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);
Связанные материалы
- Полнотекстовые и семантические виды и функции управления динамичным поиском
- Полнотекстовый поиск
- Защищаемые объекты
- Настройка и управление средствами разбиения текста на слова и стеммерами
- Настройка файлов тезауруса и управление ими для полнотекстового поиска
- Настройка стоп-слов, списков стоп-слов и управление ими для полнотекстового поиска
- Запросы с полнотекстовым поиском