FREETEXTTABLE (Transact-SQL)FREETEXTTABLE (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Es una función utilizada en el cláusula FROM de un Transact-SQLTransact-SQL instrucción SELECT para realizar un SQL ServerSQL Server búsqueda de texto completo en texto completo indiza las columnas que contienen tipos de datos basados en caracteres.Is a function used in the FROM clause of a Transact-SQLTransact-SQL SELECT statement to perform a SQL ServerSQL Server full-text search on full-text indexed columns containing character-based data types. Esta función devuelve una tabla de cero, uno o más filas para las columnas que contienen valores que coinciden con el significado y no solo literalmente, del texto especificado cadena_freetext.This function returns a table of zero, one, or more rows for those columns containing values that match the meaning and not just the exact wording, of the text in the specified freetext_string. Se hace referencia a FREETEXTTABLE como si fuera un nombre de tabla normal.FREETEXTTABLE is referenced as if it were a regular table name.

FREETEXTTABLE es útil para los mismos tipos de coincidencias que el FREETEXT (Transact-SQL),FREETEXTTABLE is useful for the same kinds of matches as the FREETEXT (Transact-SQL),

Las consultas que usan FREETEXTTABLE devuelven un valor de clasificación por relevancia (RANK) y una clave de texto completo (KEY) para cada fila.Queries using FREETEXTTABLE return a relevance ranking value (RANK) and full-text key (KEY) for each row.

Nota

Para obtener información sobre las formas de búsqueda de texto completo que se admiten en SQL ServerSQL Server, vea Consulta con búsqueda de texto completo.For information about the forms of full-text searches that are supported by SQL ServerSQL Server, see Query with Full-Text Search.

(https://azure.microsoft.com/documentation/articles/sql-database-preview-whats-new/?WT.mc_id=TSQL_GetItTag)).|(https://azure.microsoft.com/documentation/articles/sql-database-preview-whats-new/?WT.mc_id=TSQL_GetItTag)).|

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

  
FREETEXTTABLE (table , { column_name | (column_list) | * }   
          , 'freetext_string'   
     [ , LANGUAGE language_term ]   
     [ , top_n_by_rank ] )  

ArgumentosArguments

tabletable
Es el nombre de la tabla que se ha marcado para consultas de texto completo.Is the name of the table that has been marked for full-text querying. tabla o vistapuede ser un uno, dos o nombre de objeto de base de datos de tres partes.table or viewcan be a one-, two-, or three-part database object name. Al consultar una vista, puede incluirse solo una tabla base indizada de texto completo.When querying a view, only one full-text indexed base table can be involved.

tabla no se puede especificar un nombre de servidor y no se puede usar en consultas en servidores vinculados.table cannot specify a server name and cannot be used in queries against linked servers.

column_namecolumn_name
Es el nombre de una o varias columnas indizadas de texto completo de la tabla especificada en la cláusula FROM.Is the name of one or more full-text indexed columns of the table specified in the FROM clause. Las columnas pueden ser de tipo char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary o varbinary(max).The columns can be of type char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, or varbinary(max).

column_listcolumn_list
Indica que se pueden especificar varias columnas, separadas por una coma.Indicates that several columns, separated by a comma, can be specified. column_list debe ir entre paréntesis.column_list must be enclosed in parentheses. A menos que se especifique language_term, el idioma de todas las columnas de column_list debe ser el mismo.Unless language_term is specified, the language of all columns of column_list must be the same.

*
Especifica que todas las columnas que se hayan registrado para la búsqueda de texto completo se tienen que usar para buscar la cadena_freetext determinada.Specifies that all columns that have been registered for full-text searching should be used to search for the given freetext_string. A menos que language_term se especifica, el idioma de todas las columnas indizadas de texto completo en la tabla debe ser el mismo.Unless language_term is specified, the language of all full-text indexed columns in the table must be the same.

cadena_freetextfreetext_string
Es el texto que se va a buscar en column_name.Is text to search for in the column_name. Se puede escribir cualquier texto, incluidas palabras, frases y oraciones.Any text, including words, phrases or sentences, can be entered. Se generarán coincidencias si se encuentra algún término o las formas de algún término en el índice de texto completo.Matches are generated if any term or the forms of any term is found in the full-text index.

A diferencia de en el CONTAINS buscar condición where y es una palabra clave, cuando se usa en cadena_freetext la palabra 'and' se considera una palabra irrelevante, o palabra irrelevantey se descartarán.Unlike in the CONTAINS search condition where AND is a keyword, when used in freetext_string the word 'and' is considered a noise word, or stopword, and will be discarded.

No se permite el uso de WEIGHT, FORMSOF, caracteres comodín, NEAR y otros elementos sintácticos.Use of WEIGHT, FORMSOF, wildcards, NEAR and other syntax is not allowed. cadena_freetext se separa en palabras, de las que se extraen las desinencias y se pasan por el diccionario de sinónimos.freetext_string is wordbroken, stemmed, and passed through the thesaurus.

LANGUAGE language_termLANGUAGE language_term
Es el idioma cuyos recursos se utilizarán en la separación de palabras, la lematización, los diccionarios de sinónimos y la eliminación de palabras irrelevantes como parte de la consulta.Is the language whose resources will be used for word breaking, stemming, and thesaurus and stopword removal as part of the query. Este parámetro es opcional y puede especificarse como un valor hexadecimal, un entero o una cadena correspondiente al identificador de configuración regional (LCID) de un idioma.This parameter is optional and can be specified as a string, integer, or hexadecimal value corresponding to the locale identifier (LCID) of a language. Si se especifica language_term, el idioma que representa se aplicará a todos los elementos de la condición de búsqueda.If language_term is specified, the language it represents will be applied to all elements of the search condition. Si no se especifica ningún valor, se utiliza el idioma de texto completo de la columna.If no value is specified, the column full-text language is used.

Si se almacenan juntos documentos de idiomas diferentes como objetos binarios grandes (BLOB) en una sola columna, el identificador de configuración regional (LCID) de un documento determinado determina qué idioma se usa para indizar su contenido.If documents of different languages are stored together as binary large objects (BLOBs) in a single column, the locale identifier (LCID) of a given document determines what language is used to index its content. Al consultar este tipo de columna, especificar LANGUAGE término_de_idioma puede aumentar la probabilidad de encontrar una coincidencia correcta.When querying such a column, specifying LANGUAGE language_term can increase the probability of a good match.

Cuando se especifica como una cadena, language_term corresponde al valor de columna alias de la vista de compatibilidad sys.syslanguages (Transact-SQL).When specified as a string, language_term corresponds to the alias column value in the sys.syslanguages (Transact-SQL) compatibility view. La cadena debe estar delimitada con comillas sencillas, como en 'language_term'.The string must be enclosed in single quotation marks, as in 'language_term'. Cuando se especifica como un entero, language_term es el LCID real que identifica el idioma.When specified as an integer, language_term is the actual LCID that identifies the language. Cuando se especifica como un valor hexadecimal, language_term es 0x seguido del valor hexadecimal del LCID.When specified as a hexadecimal value, language_term is 0x followed by the hexadecimal value of the LCID. El valor hexadecimal no puede superar los ocho dígitos, incluidos los ceros a la izquierda.The hexadecimal value must not exceed eight digits, including leading zeros.

Si el valor está en formato DBCS (juego de caracteres de doble byte), MicrosoftMicrosoft SQL ServerSQL Server lo convertirá a Unicode.If the value is in double-byte character set (DBCS) format, MicrosoftMicrosoft SQL ServerSQL Server will convert it to Unicode.

Si el idioma especificado no es válido o no hay recursos instalados que se correspondan con dicho idioma, SQL ServerSQL Server devuelve un error.If the language specified is not valid or there are no resources installed that correspond to that language, SQL ServerSQL Server returns an error. Para usar recursos de idioma neutro, especifique 0x0 como language_term.To use the neutral language resources, specify 0x0 as language_term.

top_n_by_ranktop_n_by_rank
Especifica que solo el ncoincidencias con una clasificación más altos, en orden descendente, se devuelven.Specifies that only the nhighest ranked matches, in descending order, are returned. Solo se aplica cuando un valor entero, n, se especifica.Applies only when an integer value, n, is specified. Si se combina top_n_by_rank con otros parámetros, es posible que la consulta devuelva menos filas de las que en realidad coinciden con todos los predicados.If top_n_by_rank is combined with other parameters, the query could return fewer rows than the number of rows that actually match all the predicates. top_n_by_rank permite aumentar el rendimiento de las consultas recuperando solamente las coincidencias más relevantes.top_n_by_rank allows you to increase query performance by recalling only the most relevant hits.

ComentariosRemarks

Los predicados y las funciones de texto completo operan en una única tabla, que se obtiene del predicado FROM.Full-text predicates and functions work on a single table, which is implied in the FROM predicate. Para buscar en varias tablas, utilice una tabla combinada en la cláusula FROM a fin de buscar en un conjunto de resultados que sea el producto de dos o más tablas.To search on multiple tables, use a joined table in your FROM clause to search on a result set that is the product of two or more tables.

FREETEXTTABLE utiliza las mismas condiciones de búsqueda que el predicado FREETEXT.FREETEXTTABLE uses the same search conditions as the FREETEXT predicate.

Similar a CONTAINSTABLE, la tabla devuelta tiene las columnas denominadas clave y rango, que se hace referencia en la consulta para obtener las filas apropiadas y utilizar la fila de valores de clasificación.Like CONTAINSTABLE, the table returned has columns named KEY and RANK, which are referenced within the query to obtain the appropriate rows and use the row ranking values.

PermisosPermissions

Solo los usuarios que dispongan de los privilegios SELECT adecuados para la tabla especificada o las columnas de la tabla a las que se haga referencia pueden llamar a FREETEXTTABLE.FREETEXTTABLE can be invoked only by users with appropriate SELECT privileges for the specified table or the referenced columns of the table.

EjemplosExamples

A.A. Ejemplo sencilloSimple Example

El ejemplo siguiente se crea y rellena una tabla sencilla de dos columnas, listado 3 condados y los colores de sus marcas.The following example creates and populates a simple table of two columns, listing 3 counties and the colors in their flags. La TI se crea y rellena un catálogo de texto completo y un índice en la tabla.The it creates and populates a full-text catalog and index on the table. El FREETEXTTABLE se muestra la sintaxis.Then the FREETEXTTABLE syntax is demonstrated.

CREATE TABLE Flags (Country nvarchar(30) NOT NULL, FlagColors varchar(200));  
CREATE UNIQUE CLUSTERED INDEX FlagKey ON Flags(Country);  
INSERT Flags VALUES ('France', 'Blue and White and Red');  
INSERT Flags VALUES ('Italy', 'Green and White and Red');  
INSERT Flags VALUES ('Tanzania', 'Green and Yellow and Black and Yellow and Blue');  
SELECT * FROM Flags;  
GO  
  
CREATE FULLTEXT CATALOG TestFTCat;  
CREATE FULLTEXT INDEX ON Flags(FlagColors) KEY INDEX FlagKey ON TestFTCat;  
GO   
  
SELECT * FROM Flags;  
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Blue');  
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Yellow');  

b.B. Usar FREETEXT en INNER JOINUsing FREETEXT in an INNER JOIN

El ejemplo siguiente devuelve la descripción y el rango de todos los productos cuya descripción coincide con el significado de high level of performance.The following example returns the description and rank of any products with a description that matches the meaning of high level of performance.

USE AdventureWorks2012;  
GO  
  
SELECT FT_TBL.Description  
    ,KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL   
    INNER JOIN FREETEXTTABLE(Production.ProductDescription,  
    Description,   
    'high level of performance') AS KEY_TBL  
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY RANK DESC;  
GO  

C.C. Especificar las coincidencias con una clasificación más alta y el idiomaSpecifying Language and Highest Ranked Matches

El ejemplo siguiente es idéntico y muestra el uso de la LANGUAGE language_term y top_n_by_rank parámetros.The following example is identical and shows the use of the LANGUAGElanguage_term and top_n_by_rank parameters.

USE AdventureWorks2012;  
GO  
  
SELECT FT_TBL.Description  
    ,KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL   
    INNER JOIN FREETEXTTABLE(Production.ProductDescription,  
    Description,   
    'high level of performance',  
    LANGUAGE N'English', 2) AS KEY_TBL  
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY RANK DESC;  
GO  

Nota

El LENGUAJE language_term parámetr no es necesario para usar el top_n_by_rank parámetro .The LANGUAGE language_term parameter is not required to use the top_n_by_rank parameter .

Vea tambiénSee Also

Introducción a la búsqueda de texto completo Get Started with Full-Text Search
Creación y administración de catálogos de texto completo Create and Manage Full-Text Catalogs
CREATE FULLTEXT CATALOG (Transact-SQL) CREATE FULLTEXT CATALOG (Transact-SQL)
CREATE FULLTEXT INDEX (Transact-SQL) CREATE FULLTEXT INDEX (Transact-SQL)
Crear y administrar índices de texto completo Create and Manage Full-Text Indexes
Consultar con búsqueda de texto completo Query with Full-Text Search
Crear consultas de búsqueda de texto completo (Visual Database Tools) Create Full-Text Search Queries (Visual Database Tools)
CONTAINS (Transact-SQL) CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL) FREETEXT (Transact-SQL)
Rowset Functions (Transact-SQL) Rowset Functions (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
WHERE (Transact-SQL) WHERE (Transact-SQL)
Opción de configuración del servidor Calcular rango previamenteprecompute rank Server Configuration Option