Saltar al contenido

No se puede usar un predicado CONTAINS o FREETEXT en una tabla o vista indexada porque no está indexada en texto completo

Poseemos la mejor información que hemos encontrado on line. Nosotros esperamos que te resulte de utilidad y si puedes comentarnos algo que nos pueda ayudar a perfeccionar nuestra información siente la libertad de hacerlo..

Solución:

  1. Asegúrese de tener instalada la función de búsqueda de texto completo.

    Configuración de búsqueda de texto completo

  2. Crear catálogo de búsqueda de texto completo.

     use AdventureWorks
     create fulltext catalog FullTextCatalog as default
    
     select *
     from sys.fulltext_catalogs
    
  3. Crear índice de búsqueda de texto completo.

     create fulltext index on Production.ProductDescription(Description)
     key index PK_ProductDescription_ProductDescriptionID
    

    Antes de crear el índice, asegúrese de lo siguiente:
    – aún no tiene un índice de búsqueda de texto completo en la tabla, ya que solo se permite un índice de búsqueda de texto completo en una tabla
    – existe un índice único en la tabla. El índice debe basarse en un solokey columna, que no permite NULL.
    – Existe un catálogo de texto completo. Debe especificar explícitamente el nombre del catálogo de texto completo si no hay un catálogo de texto completo predeterminado.

Puede realizar los pasos 2 y 3 en SQL Server Management Studio. En el explorador de objetos, haga clic derecho en una tabla, seleccione Full-Text index elemento del menú y luego Define Full-Text Index... elemento del submenú. El asistente de indexación de texto completo lo guiará a través del proceso. También creará un catálogo de búsqueda de texto completo para usted si aún no tiene ninguno.

ingrese la descripción de la imagen aquí

Puede encontrar más información en MSDN

Una solución para CONTAINS: si no desea crear un índice de texto completo en la columna y el rendimiento no es una de sus prioridades, puede usar el LIKE declaración que no necesita ninguna configuración previa:

Ejemplo: encontrar todos los Productos que contengan la letra Q:

SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'

debes definir Full-Text-Index en todas las tablas en la base de datos donde necesita usar una consulta con CONTAINS que llevará algún tiempo.

En su lugar, puede utilizar el LIKE lo que le dará resultados instantáneos sin necesidad de ajustar ninguna configuración para las tablas.

Ejemplo:

SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'

El mismo resultado obtenido con CONTAINS se puede obtener con LIKE.

ver el resultado:
ingrese la descripción de la imagen aquí

Si estás contento con lo expuesto, puedes dejar un artículo acerca de qué le añadirías a esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *