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 = 0runs con expansion_type = 2running con expansion_type = 2ran con expansion_type = 2jog 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_parser
Mediante , 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
- Funciones y vistas de administración dinámica de búsqueda semántica y búsqueda de texto completo (Transact-SQL)
- Búsqueda de texto completo
- Elementos protegibles
Pasos siguientes
- Configurar y administrar separadores de palabras y lematizadores para la búsqueda
- Configurar y administrar archivos de sinónimos para búsquedas de texto completo
- Configurar y administrar palabras irrelevantes y listas de palabras irrelevantes para la búsqueda de texto completo
- Consultar con búsqueda de texto completo