sys.dm_fts_parser (Transact-SQL)sys.dm_fts_parser (Transact-SQL)

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions)

Devuelve el resultado de la tokenización final después de aplicar una combinación determinada de separador de palabras, Diccionario de sinónimosy lista de palabras irrelevantes a una entrada de cadena de consulta.Returns the final tokenization result after applying a given word breaker, thesaurus, and stoplist combination to a query string input. 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.The tokenization result is equivalent to the output of the Full-Text Engine for the specified query string.

sys.dm_fts_parser es una función de administración dinámica.sys.dm_fts_parser is a dynamic management function.

SintaxisSyntax

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

ArgumentosArguments

query_stringquery_string
Consulta que se desea analizar.The query that you want to parse. query_string puede ser una cadena de cadenas que contenga compatibilidad con la sintaxis.query_string can be a string chain that CONTAINS syntax support. Por ejemplo, se pueden incluir formas con inflexión, un diccionario de sinónimos y operadores lógicos.For example, you can include inflectional forms, a thesaurus, and logical operators.

lcidlcid
Identificador de configuración regional (LCID) del separador de palabras que se va a utilizar para analizar query_string.Locale identifier (LCID) of the word breaker to be used for parsing query_string.

stoplist_idstoplist_id
IDENTIFICADOR de la lista de palabras irrelevantes, si existe, que va a usar el separador de palabras identificado por LCID.ID of the stoplist, if any, to be used by the word breaker identified by lcid. stoplist_id es de tipo int. Si especifica ' NULL ', no se utiliza ninguna lista de palabras irrelevantes.stoplist_id is int. If you specify 'NULL', no stoplist is used. Si se especifica 0, se utiliza la lista de palabras irrelevantes del sistema.If you specify 0, the system STOPLIST is used.

Un identificador de lista de palabras irrelevantes es único dentro de una base de datos.A stoplist ID is unique within a database. Para obtener el identificador de la lista de palabras irrelevantes de un índice de texto completo en una tabla determinada, use la vista de catálogo Sys.fulltext_indexes .To obtain the stoplist ID for a full-text index on a given table use the sys.fulltext_indexes catalog view.

accent_sensitivityaccent_sensitivity
Valor booleano que controla si la búsqueda de texto completo distingue o no los signos diacríticos.Boolean value that controls whether full-text search is sensitive or insensitive to diacritics. accent_sensitivity es de bits, con uno de los siguientes valores:accent_sensitivity is bit, with one of the following values:

ValueValue La distinción de acentos es...Accent sensitivity is...
00 Sin distinciónInsensitive

Palabras como "café" y "cafe" se tratan de forma idéntica.Words such as "café" and "cafe" are treated identically.
11 SensibleSensitive

Palabras como "café" y "cafe" se tratan de forma diferente.Words such as "café" and "cafe" are treated differently.

Nota

Para ver la configuración actual de este valor para un catálogo de texto completo, ejecute la siguiente Transact-SQLTransact-SQL instrucción: SELECT fulltextcatalogproperty(' catalog_name ', 'AccentSensitivity'); .To view the current setting of this value for a full-text catalog, run the following Transact-SQLTransact-SQL statement: SELECT fulltextcatalogproperty('catalog_name', 'AccentSensitivity');.

Tabla devueltaTable Returned

Nombre de la columnaColumn name Tipo de datosData type DescripciónDescription
palabra clavekeyword varbinary(128)varbinary(128) Representación hexadecimal de una palabra clave determinada devuelta por un separador de palabras.The hexadecimal representation of a given keyword returned by a word breaker. Esta representación se utiliza para almacenar la palabra clave en el índice de texto completo.This representation is used to store the keyword in the full-text index. Este valor no es legible para el usuario, pero es ú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.This value is not human-readable, but it is useful for relating a given keyword to output returned by other dynamic management views that return the content of a full-text index, such as sys.dm_fts_index_keywords and sys.dm_fts_index_keywords_by_document.

Nota: OxFF representa el carácter especial que indica el final de un archivo o conjunto de archivos.Note: OxFF represents the special character that indicates the end of a file or dataset.
group_idgroup_id intint Contiene un valor entero que es útil para diferenciar el grupo lógico a partir del cual se generó un término determinado.Contain an integer value that is useful for differentiating the logical group from which a given term was generated. Por ejemplo, 'Server AND DB OR FORMSOF(THESAURUS, DB)"' genera los valores de group_id siguientes en inglés:For example, 'Server AND DB OR FORMSOF(THESAURUS, DB)"' produces the following group_id values in English:

1: servidor1: Server
2: BASE DE2: DB
3: BASE DE3: DB
phrase_idphrase_id intint 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.Contains an integer value that is useful for differentiating the cases in which alternative forms of compound words, such as full-text, are issued by the word breaker. A veces, con la presencia de palabras compuestas ('multi-million') el separador de palabras emite formatos alternativos.Sometimes, with presence of compound words ('multi-million'), alternative forms are issued by the word breaker. En ocasiones, es necesario diferenciar estos formatos alternativos (frases).These alternative forms (phrases) need to be differentiated sometimes.

Por ejemplo, 'multi-million' genera los valores de phrase_id siguientes en inglés:For example, 'multi-million' produces the following phrase_id values in English:

1 para multi1 for multi
1 para million1 for million
2 para multimillion2 for multimillion
occurrenceoccurrence intint Indica el orden de cada término en el resultado del análisis.Indicates the order of each term in the parsing result. 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:For example, for the phrase "SQL Server query processor" occurrence would contain the following occurrence values for the terms in the phrase, in English:

1 para SQL1 for SQL
2 para Server2 for Server
3 para query3 for query
4 para processor4 for processor
special_termspecial_term nvarchar(4000)nvarchar(4000) Contiene información sobre las características del término que el separador de palabras emite; por ejemplo:Contains information about the characteristics of the term that is being issued by the word breaker, one of:

Coincidencia exactaExact match

Palabra irrelevanteNoise word

Fin de fraseEnd of Sentence

Fin de párrafoEnd of paragraph

Fin de capítuloEnd of Chapter
display_termdisplay_term nvarchar(4000)nvarchar(4000) Contiene el formato legible de la palabra clave.Contains the human-readable form of the keyword. 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.As with the functions designed to access the content of the full-text index, this displayed term might not be identical to the original term due to the denormalization limitation. Sin embargo, debería ser suficientemente preciso para ayudar a identificarlo con respecto a la entrada original.However, it should be precise enough to help you identify it from the original input.
expansion_typeexpansion_type intint Contiene información sobre la naturaleza de la expansión de un término determinado; a saber:Contains information about the nature of the expansion of a given term, one of:

0 =caso de una sola palabra0 =Single word case

2=expansión con inflexión2=Inflectional expansion

4=expansión o sustitución de diccionario de sinónimos4=Thesaurus expansion/replacement

Por ejemplo, considere un caso en que el diccionario de sinónimos define run como una expansión de jog:For example, consider a case in which the thesaurus defines run as an expansion of jog:

<expansion>

<sub>run</sub>

<sub>jog</sub>

</expansion>

El término FORMSOF (FREETEXT, run) genera la salida siguiente:The term FORMSOF (FREETEXT, run) generates the following output:

run con expansion_type=0run with expansion_type=0

runs con expansion_type=2runs with expansion_type=2

running con expansion_type=2running with expansion_type=2

ran con expansion_type=2ran with expansion_type=2

jog con expansion_type=4jog with expansion_type=4
source_termsource_term nvarchar(4000)nvarchar(4000) Término o frase a partir de la cual se generó o analizó un término determinado.The term or phrase from which a given term was generated or parsed. Por ejemplo, una consulta de '"word breakers" AND stemmers' genera los valores de source_term siguientes en inglés:For example, a query on the '"word breakers" AND stemmers' produces the following source_term values in English:

word breakers para el display_termwordword breakers for the display_termword
word breakers para el display_termbreakersword breakers for the display_termbreakers
stemmers para el display_termstemmersstemmers for the display_termstemmers

ObservacionesRemarks

Sys.dm_fts_parser admite la sintaxis y las características de los predicados de texto completo, como Contains y FREETEXT, y las funciones, como CONTAINSTABLE y FREETEXTTABLE.sys.dm_fts_parser supports the syntax and features of full-text predicates, such as CONTAINS and FREETEXT, and functions, such as CONTAINSTABLE and FREETEXTTABLE.

Usar Unicode para analizar caracteres especialesUsing Unicode for Parsing Special Characters

Cuando se analiza 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 se especifique la cadena de consulta como Unicode.When you parse a query string, sys.dm_fts_parser uses the collation of the database to which you are connected, unless you specify the query string as Unicode. Por lo tanto, para una cadena no Unicode que contenga caracteres especiales, como ü o ç, la salida podría ser inesperada, dependiendo de la intercalación de la base de datos.Therefore, for a non-Unicode string that contains special characters, such as ü or ç, the output might be unexpected, depending on the collation of the database. Para procesar una cadena de consulta independientemente de la intercalación de la base de datos, anteponga a la cadena N , es decir, N' query_string ' .To process a query string independently of the database collation, prefix the string with N, that is, N'query_string'.

Para obtener más información, vea "C.For more information, see "C. Mostrar el resultado de una cadena que contiene caracteres especiales", más adelante en este tema.Displaying the Output of a String that Contains Special Characters," later in this topic.

Cuándo usar sys.dm_fts_parserWhen to Use sys.dm_fts_parser

Sys.dm_fts_parser puede ser muy eficaz para la depuración.sys.dm_fts_parser can be very powerful for debugging purposes. Algunos de los escenarios de uso principales son:Some major usage scenarios include:

  • Entender cómo trata un separador de palabras determinado una entrada dadaTo understand how a given word breaker treats a given input

    Cuando una consulta devuelve resultados inesperados, una causa probable es la manera en que el separador de palabras está analizando y dividiendo los datos.When a query returns unexpected results, a likely cause is the way that the word breaker is parsing and breaking the data. Mediante sys.dm_fts_parser, se puede saber el resultado que un separador de palabras pasa al índice de texto completo.By using sys.dm_fts_parser, you discover the result that a word breaker passes to the full-text index. Además, se puede ver qué términos son palabras irrelevantes, que no se buscan en el índice de texto completo.In addition, you can see which terms are stopwords, which are not searched in the full-text index. El hecho de que un término sea un palabra irrelevante para un idioma determinado depende de si está en la lista de palabras irrelevantes especificada por el valor stoplist_id que se declara en la función.Whether a term is a stopword for a given language depends on whether it is in the stoplist specified by the stoplist_id value that is declared in the function.

    Tenga en cuenta también la marca de distinción de acentos, que permitirá al usuario ver cómo el separador de palabras analizará la entrada teniendo en cuenta esta información.Note as well the accent sensitivity flag, which will allow the user to see how the word breaker will parse the input having in mind its accent sensitivity information.

  • Entender cómo funciona el lematizador en una entrada determinadaTo understand how the stemmer works on a given input

    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:You can find out how the word breaker and the stemmer parse a query term and its stemming forms, by specifying a CONTAINS or CONTAINSTABLE query containing the following FORMSOF clause:

    FORMSOF( INFLECTIONAL, query_term )  
    

    Los resultados indican qué términos se pasan al índice de texto completo.The results tell you what terms are being passed to the full-text index.

  • Entender cómo el diccionario de sinónimos expande o reemplaza la totalidad o una parte de la entradaTo understand how the thesaurus expands or replaces all or part of the input

    También puede especificar:You can also specify:

    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.The results of this query show how the word breaker and thesaurus interact for the query term. 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.you can see the expansion or replacements from the thesaurus and identify the resulting query that is actually being issued against the full-text index.

    Tenga en cuenta que si el usuario emiteNote that if the user issues:

    FORMSOF( FREETEXT, query_term )  
    

    Las funciones de identificación de formas flexivas y diccionario de sinónimos se ejecutarán automáticamente.The inflectional and Thesaurus capabilities will take place automatically.

Además de los escenarios de uso anteriores, sys.dm_fts_parser puede ayudar significativamente a entender y solucionar muchos otros problemas de la consulta de texto completo.In addition to the preceding usage scenarios, sys.dm_fts_parser can help significantly to understand and troubleshoot many other issues with full-text query.

PermisosPermissions

Requiere la pertenencia al rol fijo de servidor sysadmin y a los derechos de acceso a la lista de palabras irrelevantes especificada.Requires membership in the sysadmin fixed server role and access rights to the specified stoplist.

EjemplosExamples

A.A. Mostrar el resultado de un separador de palabras determinado para una palabra clave o una fraseDisplaying the output of a given word breaker for a keyword or phrase

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 following example returns the output from using the English word breaker, whose LCID is 1033, and no stoplist on the following query string:

The Microsoft business analysis

La distinción de acentos está deshabilitada.Accent sensitivity is disabled.

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

B.B. Mostrar el resultado de un separador de palabras determinado en el contexto de filtrado de la lista de palabras irrelevantesDisplaying the output of a given word breaker in the context of stoplist filtering

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 following example returns the output from using the English word breaker, whose LCID is 1033, and an English stoplist, whose ID is 77, on the following query string:

"The Microsoft business analysis" OR "MS revenue"

La distinción de acentos está deshabilitada.Accent sensitivity is disabled.

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

C.C. Mostrar el resultado de una cadena que contiene caracteres especialesDisplaying the Output of a String that Contains Special Characters

En el ejemplo siguiente, se usa Unicode para analizar la cadena francesa siguiente:The following example uses Unicode to parse the following French string:

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.The example specifies the LCID for the French language, 1036, and the ID of a user-defined stoplist, 5. La distinción de acentos está habilitada.Accent sensitivity is enabled.

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

Consulte tambiénSee Also

Funciones y vistas de administración dinámica de la búsqueda de texto completo y la búsqueda semántica (Transact-SQL) Full-Text Search and Semantic Search Dynamic Management Views and Functions (Transact-SQL)
Búsqueda de texto completo Full-Text Search
Configurar y administrar separadores de palabras y lematizadores para la búsqueda Configure and Manage Word Breakers and Stemmers for Search
Configurar y administrar archivos de sinónimos para búsquedas de Full-Text Configure and Manage Thesaurus Files for Full-Text Search
Configurar y administrar palabras irrelevantes y listas de palabras irrelevantes para la búsqueda de texto completo Configure and Manage Stopwords and Stoplists for Full-Text Search
Consultar con búsqueda de texto completo Query with Full-Text Search
Consultar con búsqueda de texto completo Query with Full-Text Search
Elementos protegiblesSecurables