sys.dm_fts_parser (Transact-SQL)

Aplica-se a: SQL Server

Devolve o resultado final da tokenização após aplicar uma dada combinação de quebrador de palavras, dicionário de sinónimos e lista de paradas a uma entrada de cadeia de consulta. O resultado da tokenização é equivalente à saída do Full-Text Engine para a cadeia de consulta especificada.

sys.dm_fts_parser é uma função de gestão dinâmica.

Syntax

sys.dm_fts_parser ( 'query_string' , lcid , stoplist_id , accent_sensitivity )

Arguments

query_string

A questão que queres analisar. query_string pode ser uma cadeia de cadeias que CONTÉM suporte de sintaxe. Por exemplo, pode incluir formas flexionais, um dicionário de sinónimos e operadores lógicos.

LCID

Identificador local (LCID) do quebrador de palavras a ser usado para análise de query_string.

stoplist_id

ID da lista de stoplist, se existir, para ser usada pelo quebrador de palavras identificado por lcid. stoplist_id é inteligência. Se especificar 'NULL', não é usada lista de paradas. Se especificar 0, é usado o sistema STOPLIST.

Um ID de stoplist é único dentro de uma base de dados. Para obter o ID de stoplist para um índice de texto completo numa dada tabela, use a vista de catálogo sys.fulltext_indexes .

accent_sensitivity

Valor booleano que controla se a pesquisa em texto completo é sensível ou insensível aos diacríticos. accent_sensitivity é bit, com um dos seguintes valores:

Value A sensibilidade ao sotaque é...
0 Insensível

Palavras como "café" e "café" são tratadas de forma idêntica.
1 Sensível

Palavras como "café" e "café" são tratadas de forma diferente.

Note

Para visualizar a definição atual deste valor para um catálogo de texto completo, execute a seguinte Transact-SQL instrução: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');.

Tabela retornada

Nome da coluna Tipo de dados Description
palavra-chave Varbinário(128) A representação hexadecimal de uma dada palavra-chave devolvida por um quebrador de palavras. Esta representação é usada para armazenar a palavra-chave no índice de texto completo. Este valor não é legível por humanos, mas é útil para relacionar uma dada palavra-chave com a saída devolvida por outras vistas dinâmicas de gestão que retornam o conteúdo de um índice em texto completo, como sys.dm_fts_index_keywords e sys.dm_fts_index_keywords_by_document.

Nota:0xFF representa o carácter especial que indica o fim de um ficheiro ou conjunto de dados.
group_id int Conter um valor inteiro útil para diferenciar o grupo lógico a partir do qual um dado termo foi gerado. Por exemplo, 'Server AND DB OR FORMSOF(THESAURUS, DB)"' produz os seguintes valores de group_id em inglês:

1: Servidor
2: DB
3: DB
phrase_id int Contém um valor inteiro útil para diferenciar os casos em que formas alternativas de palavras compostas, como texto integral, são emitidas pelo quebrador de palavras. Por vezes, com a presença de palavras compostas ('multi-milionários'), formas alternativas são emitidas pelo quebrador de palavras. Estas formas alternativas (frases) precisam de ser diferenciadas por vezes.

Por exemplo, 'multi-million' produz os seguintes valores de phrase_id em inglês:

1 para multi
1 para million
2 para multimillion
occurrence int Indica a ordem de cada termo no resultado da análise sintática. Por exemplo, para a frase "SQL Server query processor" a ocorrência incluiria os seguintes valores de ocorrência para os termos da frase, em inglês:

1 para SQL
2 para Server
3 para query
4 para processor
special_term nvarchar(4000) Contém informações sobre as características do termo que está a ser emitido pelo word breaker, um dos seguintes:

- Correspondência exata
- Palavra de ruído
- Fim da Frase
- Fim do parágrafo
- Fim do capítulo
display_term nvarchar(4000) Contém a forma legível por humanos da palavra-chave. Tal como nas funções concebidas para aceder ao conteúdo do índice do texto completo, este termo apresentado pode não ser idêntico ao termo original devido à limitação de desnormalização. No entanto, deve ser suficientemente preciso para ajudar a identificá-lo a partir da entrada original.
expansion_type int Contém informações sobre a natureza da expansão de um dado termo, um dos seguintes:

0 = Caso de palavra única
2 = Expansão flexional
4 = Expansão/substituição do tesauro

Por exemplo, considere um caso em que o tesauro define run como uma expansão de jog:

<expansion>
<sub>run</sub>
<sub>jog</sub>
</expansion>

O termo FORMSOF (FREETEXT, run) gera a seguinte saída:

run com expansion_type = 0
runs com expansion_type = 2
running com expansion_type = 2
ran com expansion_type = 2
jog com expansion_type = 4
source_term nvarchar(4000) O termo ou frase a partir do qual um determinado termo foi gerado ou analisado. Por exemplo, uma consulta em o '"word breakers" AND stemmers' produz os seguintes valores de source_term em inglês:

word breakers para o display_termword
word breakers para o display_termbreakers
stemmers para o display_termstemmers

Remarks

sys.dm_fts_parser suporta a sintaxe e as funcionalidades de predicados em texto completo, como CONTAINS e FREETEXT, e funções como CONTAINSTABLE e FREETEXTTABLE.

Use Unicode para analisar caracteres especiais

Quando analisas uma cadeia de consulta, sys.dm_fts_parser usa a colação da base de dados à qual estás ligado, a menos que especifiques a cadeia de consulta como Unicode. Portanto, para uma cadeia não Unicode que contém caracteres especiais, como ü ou ç, a saída pode ser inesperada, dependendo da compilação da base de dados. Para processar uma cadeia de consulta independentemente da colação da base de dados, prefixe a cadeia com N, ou seja, N'query_string'.

Para mais informações, veja C. Mostrar a saída de uma cadeia que contenha caracteres especiais mais adiante neste artigo.

Quando usar sys.dm_fts_parser

sys.dm_fts_parser pode ser poderoso para fins de depuração. Alguns cenários principais de utilização incluem:

  • Para compreender como um determinado quebrador de palavras trata uma determinada entrada

    Quando uma consulta retorna resultados inesperados, uma causa provável é a forma como o quebrador de palavras está a analisar e quebrar os dados. Ao usar sys.dm_fts_parser, descobre o resultado de que um quebrador de palavras passa para o índice do texto completo. Além disso, pode ver quais os termos que são palavras de parada, quais não são pesquisados no índice do texto completo. Se um termo é uma palavra final para uma dada língua depende de estar na lista de paradas especificada pelo valor stoplist_id declarado na função.

    O flag de sensibilidade de acento permite-lhe ver como o quebrador de palavras analisa a entrada, tendo em conta a sua informação de sensibilidade ao acento.

  • Para compreender como o stemmer funciona numa dada entrada

    Pode descobrir como o word breaker e o stemmer analisam um termo de consulta e as suas formas stemming, especificando uma consulta CONTAINS ou CONTAINSTABLE contendo a seguinte cláusula FORMSOF:

    FORMSOF( INFLECTIONAL, query_term )
    

    Os resultados indicam que termos estão a ser passados para o índice do texto completo.

  • Para compreender como o dicionário de sinónimos expande ou substitui total ou parcialmente a entrada

    Também pode especificar:

    FORMSOF( THESAURUS, query_term )
    

    Os resultados desta consulta mostram como o quebrador de palavras e o tesauro interagem para o termo da consulta. Pode ver a expansão ou as substituições do dicionário de sinônimos e identificar a consulta resultante que está realmente a ser emitida contra o índice do texto completo.

    Se o utilizador tiver problemas:

    FORMSOF( FREETEXT, query_term )
    

    As capacidades flexionais e de Tesauro ocorrem automaticamente.

Para além dos cenários de uso anteriores, sys.dm_fts_parser pode ajudar significativamente a compreender e resolver muitos outros problemas relacionados com consultas em texto completo.

Permissions

Requer CREATE FULLTEXT CATALOG permissão e direitos de acesso ao stoplist especificado.

Examples

A. Mostrar a saída de um determinado quebrador de palavras para uma palavra-chave ou frase

O exemplo seguinte devolve a saída do uso do word breaker em inglês, cujo LCID é 1033, e sem lista de paragens na cadeia de consulta seguinte:

The Microsoft business analysis

A sensibilidade ao sotaque está desativada.

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0);

B. Mostrar a saída de um determinado quebrador de palavras no contexto do filtragem por lista de paradas

O exemplo seguinte devolve a saída do uso do word breaker em inglês, cujo LCID é 1033, e de uma lista de paragens em inglês, cujo ID é 77, na seguinte cadeia de consulta:

"The Microsoft business analysis" OR "MS revenue"

A sensibilidade ao sotaque está desativada.

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis"  OR " MS revenue" ', 1033, 77, 0);

C. Mostrar a saída de uma cadeia que contenha caracteres especiais

O exemplo seguinte usa Unicode para analisar a seguinte cadeia francesa:

français

O exemplo especifica o LCID para a língua francesa, 1036, e o ID de uma lista de paragens definida pelo utilizador, 5. A sensibilidade ao acento está ativada.

SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);

Consulte também

Passos seguintes