Introducción a la búsqueda de texto completo

Las consultas de texto completo realizan las búsquedas lingüísticas contra los datos de texto en índices de texto completo sobre palabras y frases basándose en las reglas de un idioma determinado, como inglés o japonés. Las consultas de texto completo pueden contener palabras y frases sencillas, o formas diversas de una palabra o frase.

La búsqueda de texto completo es aplicable en una gama amplia de escenarios empresariales, como e-businesses: búsqueda de elementos en un sitio Web; bufetes de abogados: búsqueda de historiales de casos legales en un repositorio de datos; o departamentos de recursos humanos: comparación de descripciones de trabajos con curriculum vitae almacenados. Las tareas administrativas y de desarrollo básicas de la búsqueda de texto completo son equivalentes independientemente de los escenarios empresariales. Sin embargo, en un escenario empresarial determinado, el índice y las consultas de texto completo se pueden ajustar a los objetivos empresariales. Por ejemplo, para un e-business podría ser más importante la maximización del rendimiento que la clasificación de resultados, la exactitud de la recuperación (cuántas de las coincidencias existentes devuelve realmente una consulta de texto completo) o la admisión de varios idiomas. Para un bufete de abogados, recuperar cada posible acierto (recuperación total de información) podría ser la consideración más importante.

Información general acerca de cómo configurar una base de datos para la búsqueda de texto completo

En cualquier escenario, un administrador de bases de datos realiza los siguientes pasos básicos para configurar columnas de tabla en una base de datos para la búsqueda de texto completo:

  1. Crear un catálogo de texto completo

  2. En cada tabla en la que se desea buscar, crear un índice de texto completo por:

    1. Identificar cada columna de texto que se desea incluir en el índice de texto completo.

    2. Si una columna determinada contiene documentos almacenados como datos binarios (varbinary, varbinary(max)o datos de image ), se debe especificar una columna de la tabla (la columna de tipo) que identifica el tipo de cada documento en la columna que se va a indizar.

    3. Especificar el idioma que se desea que utilice la búsqueda de texto completo en los documentos de la columna.

    4. Elegir el mecanismo del seguimiento de cambios que se desea utilizar en el índice de texto completo para el seguimiento de cambios en la tabla base y sus columnas.

La búsqueda de texto completo admite varios idiomas a través del uso de los componentes lingüísticos siguientes: separadores de palabras y lematizadores, listas de palabras irrelevantes y archivos de diccionarios de sinónimos. Los archivos de diccionario de sinónimos y, en algunos casos, las listas de palabras irrelevantes requieren su configuración por un administrador de la base de datos. Un archivo de diccionario de sinónimos determinado admite todos los índices de texto completo que utilicen el idioma correspondiente, y una lista de palabras irrelevantes determinada puede estar asociada a tantos índices de texto completo como se desee.

Para obtener más información, vea Administrar la búsqueda de texto completo.

Información general sobre consultas de texto completo

Una vez agregadas las columnas a un índice de texto completo, las aplicaciones y los usuarios pueden ejecutar las consultas de texto completo en el texto de las columnas. Estas consultas pueden buscar cualquiera de lo siguiente:

  • Una o varias palabras o frases específicas (término simple)

  • Una palabra o frase cuyas palabras empiezan con un texto determinado (término de prefijo)

  • Formas con inflexión de una palabra determinada (término de generación)

  • Una palabra o frase que esté cerca de otra palabra o frase (término de proximidad)

  • Formas sinónimas de una palabra determinada (diccionario de sinónimos)

  • Palabras o frases que usan valores ponderados (término ponderado)

Las consultas de texto completo usan un pequeño conjunto de predicados (CONTAINS y FREETEXT) de Transact-SQL y funciones (CONTAINSTABLE y FREETEXTTABLE). Sin embargo, los objetivos de la búsqueda en un escenario empresarial determinado influyen en la estructura exacta de las consultas de texto completo; por ejemplo:

  • e-business - búsqueda de un producto en un sitio web:

    SELECT product_id FROM products WHERE CONTAINS(product_description, ”Snap Happy 100EZ” OR FORMSOF(THESAURUS,’Snap Happy’) OR ‘100EZ’) AND product_cost<200 …
    
  • Escenario de contratación de empleados – búsqueda de candidatos para un puesto de trabajo que tengan experiencia en SQL Server:

    SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume,”SQL Server”) AND candidate_division =DBA
    

Para obtener más información, vea Consultar SQL Server mediante la búsqueda de texto.

Comparación de LIKE con la búsqueda de texto completo

A diferencia de la búsqueda de texto completo, el predicado de Transact-SQLLIKE funciona sólo en patrones de caracteres. Además, no es posible utilizar el predicado de LIKE para consultar datos binarios con formato. Por otro lado, una consulta LIKE contra una cantidad grande de datos de texto no estructurados es mucho más lenta que una consulta de texto completo equivalente contra los mismos datos. Una consulta LIKE realizada en millones de filas de datos de texto puede tardar minutos en devolver resultados, mientras que una consulta de texto completo en los mismos datos puede tardar únicamente segundos, en función del número de filas que se devuelvan.