sys.dm_fts_parser (Transact-SQL)

Se aplica a: SQL Server

Devuelve el resultado de tokenización final después de aplicar una combinación de separador de palabras, diccionario de sinónimos y lista de palabras irrelevantes determinada a una entrada de cadena de consulta. El resultado de la tokenización es equivalente al que produce el motor de búsqueda de texto completo para la cadena de consulta especificada.

sys.dm_fts_parser es una función de administración dinámica.

Sintaxis

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

Argumentos

query_string

Consulta que se desea analizar. query_string puede ser una cadena de cadenas que admite la sintaxis CONTAINS. Por ejemplo, se pueden incluir formas con inflexión, un diccionario de sinónimos y operadores lógicos.

lcid

Identificador de configuración regional (LCID) del separador de palabras que se va a usar para analizar query_string.

stoplist_id

Identificador de la lista de palabras irrelevantes, si existe, que va a usar el separador de palabras identificado por lcid. stoplist_id es int. Si especifica "NULL", no se usa ninguna lista de palabras irrelevantes. Si se especifica 0, se utiliza la lista de palabras irrelevantes del sistema.

Un identificador de lista de palabras irrelevantes es único dentro de una base de datos. Para obtener el identificador de lista de palabras irrelevantes de un índice de texto completo en una tabla determinada, use la vista de catálogo de sys.fulltext_indexes .

accent_sensitivity

Valor booleano que controla si la búsqueda de texto completo distingue o no los signos diacríticos. accent_sensitivity es bit, con uno de los siguientes valores:

Valor La sensibilidad de énfasis es...
0 Sin distinción

Palabras como "café" y "cafe" se tratan de forma idéntica.
1 Confidencial

Palabras como "café" y "cafe" se tratan de forma diferente.

Nota:

Para ver la configuración actual de este valor para un catálogo de texto completo, ejecute la siguiente instrucción Transact-SQL: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');.

Tabla devuelta

Nombre de la columna Tipo de datos Descripción
keyword varbinary(128) Representación hexadecimal de una palabra clave determinada devuelta por un separador de palabras. Esta representación se utiliza para almacenar la palabra clave en el índice de texto completo. Este valor no es legible por el usuario, pero resulta útil para relacionar una palabra clave determinada con la salida devuelta por otras vistas de administración dinámica que devuelven el contenido de un índice de texto completo, como sys.dm_fts_index_keywords y sys.dm_fts_index_keywords_by_document.

Nota: 0xFF representa el carácter especial que indica el final de un archivo o un conjunto de datos.
group_id int Contiene un valor entero que es útil para diferenciar el grupo lógico a partir del cual se generó un término determinado. Por ejemplo, 'Server AND DB OR FORMSOF(THESAURUS, DB)"' genera los valores de group_id siguientes en inglés:

1: Servidor
2: BASE de datos
3: BASE de datos
phrase_id int Contiene un valor entero que resulta útil para diferenciar los casos en los que el separador de palabras emite formatos alternativos de palabras compuestas, tales como texto completo. A veces, con la presencia de palabras compuestas ('multi-million') el separador de palabras emite formatos alternativos. En ocasiones, es necesario diferenciar estos formatos alternativos (frases).

Por ejemplo, 'multi-million' genera los valores de phrase_id siguientes en inglés:

1 para multi
1 para million
2 para multimillion
occurrence int Indica el orden de cada término en el resultado del análisis. Por ejemplo, para la repetición de la frase "SQL Server query processor", contendría los valores de repetición siguientes para los términos de la frase, en inglés:

1 para SQL
2 para Server
3 para query
4 en processor
special_term nvarchar(4000) Contiene información sobre las características del término que el separador de palabras emite; por ejemplo:

- Coincidencia exacta
- Palabra ruido
- Fin de la oración
- Fin del párrafo
- Fin del capítulo
display_term nvarchar(4000) Contiene el formato legible de la palabra clave. Al igual que con las funciones diseñadas para tener acceso al contenido del índice de texto completo, este término mostrado podría no ser idéntico al original, debido a la limitación de la desnormalización. Sin embargo, debería ser suficientemente preciso para ayudar a identificarlo con respecto a la entrada original.
expansion_type int Contiene información sobre la naturaleza de la expansión de un término determinado; a saber:

0 = Mayúsculas y minúsculas de palabra única
2 = Expansión inflexión
4 = Expansión/reemplazo del diccionario de sinónimos

Por ejemplo, considere un caso en que el diccionario de sinónimos define run como una expansión de jog:

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

El término FORMSOF (FREETEXT, run) genera la salida siguiente:

run con expansion_type = 0
runs con expansion_type = 2
running con expansion_type = 2
ran con expansion_type = 2
jog con expansion_type = 4
source_term nvarchar(4000) Término o frase a partir de la cual se generó o analizó un término determinado. Por ejemplo, una consulta en genera '"word breakers" AND stemmers' los siguientes valores de source_term en inglés:

word breakers para el display_term word
word breakers para el display_term breakers
stemmers para el display_term stemmers

Comentarios

sys.dm_fts_parser admite la sintaxis y las características de predicados de texto completo, como CONTAINS y FREETEXT, y funciones, como CONTAINSTABLE y FREETEXTTABLE.

Usar Unicode para analizar caracteres especiales

Al analizar una cadena de consulta, sys.dm_fts_parser usa la intercalación de la base de datos a la que está conectado, a menos que especifique la cadena de consulta como Unicode. Por lo tanto, para una cadena que no sea Unicode que contenga caracteres especiales, como ü o ç, la salida podría ser inesperada, en función de la intercalación de la base de datos. Para procesar una cadena de consulta independientemente de la intercalación de la base de datos, prefijo la cadena con N, es decir, N'query_string'.

Para obtener más información, vea C. Mostrar la salida de una cadena que contiene caracteres especiales más adelante en este artículo.

Cuándo usar sys.dm_fts_parser

sys.dm_fts_parser puede ser eficaz para fines de depuración. Algunos de los escenarios de uso principales son:

  • Entender cómo trata un separador de palabras determinado una entrada dada

    Cuando una consulta devuelve resultados inesperados, una causa probable es la manera en que el separador de palabras está analizando y dividiendo los datos. sys.dm_fts_parserMediante , detecta el resultado que un separador de palabras pasa al índice de texto completo. Además, puede ver qué términos son palabras irrelevantes, que no se buscan en el índice de texto completo. Si un término es una palabra irrelevante para un idioma determinado depende de si está en la lista de palabras irrelevantes especificada por el valor de stoplist_id que se declara en la función.

    La marca de sensibilidad de énfasis le permite ver cómo el separador de palabras analiza la entrada, teniendo en cuenta su información de sensibilidad de énfasis.

  • Entender cómo funciona el lematizador en una entrada determinada

    Puede averiguar cómo el separador de palabras y el lematizador analizan un término de la consulta y sus formas de lematización especificando una consulta CONTAINS o CONTAINSTABLE que contenga la cláusula FORMSOF siguiente:

    FORMSOF( INFLECTIONAL, query_term )
    

    Los resultados indican qué términos se pasan al índice de texto completo.

  • Entender cómo el diccionario de sinónimos expande o reemplaza la totalidad o una parte de la entrada

    También puede especificar:

    FORMSOF( THESAURUS, query_term )
    

    Los resultados de esta consulta muestran cómo interactúan el separador de palabras y el diccionario de sinónimos para el término de la consulta. Puede ver la expansión o los reemplazos del diccionario de sinónimos, e identificar la consulta resultante que se emite realmente frente al índice de texto completo.

    Si el usuario tiene problemas:

    FORMSOF( FREETEXT, query_term )
    

    Las funcionalidades de inflexión y diccionario de sinónimos se realizan automáticamente.

Además de los escenarios de uso anteriores, sys.dm_fts_parser puede ayudar significativamente a comprender y solucionar muchos otros problemas con la consulta de texto completo.

Permisos

Requiere el permiso CREATE FULLTEXT CATALOG y derechos de acceso a la lista de palabras irrelevantes especificada.

Ejemplos

A Mostrar la salida de un separador de palabras determinado para una palabra clave o frase

En el ejemplo siguiente se devuelve el resultado obtenido cuando se usa el separador de palabras en inglés, cuyo LCID es 1033, y no se utiliza ninguna lista de palabras irrelevantes en la cadena de consulta siguiente:

The Microsoft business analysis

La distinción de acentos está deshabilitada.

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

B. Mostrar la salida de un separador de palabras determinado en el contexto del filtrado de listas de palabras irrelevantes

En el ejemplo siguiente se devuelve el resultado de utilizar el separador de palabras en inglés, cuyo LCID es 1033, y una lista de palabras irrelevantes en inglés, cuyo identificador es 77, en la cadena de consulta siguiente:

"The Microsoft business analysis" OR "MS revenue"

La distinción de acentos está deshabilitada.

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

C. Mostrar la salida de una cadena que contiene caracteres especiales

En el ejemplo siguiente, se usa Unicode para analizar la cadena francesa siguiente:

français

En el ejemplo, se especifica el LCID para el idioma francés, 1036 y el identificador de una lista de palabras irrelevantes definida por el usuario, 5. La distinción de acentos está habilitada.

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

Consulte también

Pasos siguientes