Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 multi1 para million2 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 SQL2 para Server3 para query4 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 = 0runs com expansion_type = 2running com expansion_type = 2ran com expansion_type = 2jog 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_termwordword breakers para o display_termbreakersstemmers 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
- Full-Text Visão e Funções de Gestão Dinâmica de Pesquisa e Pesquisa Semântica (Transact-SQL)
- Full-Text Pesquisa
- Securables