your index full enable ejemplos sql sql-server tsql sql-server-2008 full-text-search

index - full text search sql server 2017



No se puede usar un predicado CONTAINS o FREETEXT en la tabla o vista indizada porque no está indexado en texto completo (6)

Recibo un error de seguimiento en mi base de datos de SQL Server 2008 R2:

No se puede usar un predicado CONTAINS o FREETEXT en la tabla o en la vista indizada ''tblArmy'' porque no está indexado en texto completo.


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

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

    use AdventureWorks create fulltext catalog FullTextCatalog as default select * from sys.fulltext_catalogs

  3. Crear un í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 que:
    - todavía no tiene un índice de búsqueda de texto completo en la tabla, ya que solo un índice de búsqueda de texto completo está permitido en una tabla
    - existe un índice único en la tabla. El índice debe basarse en la columna de clave única, que no permite NULL.
    - existe un catálogo de texto completo. Debe especificar el nombre del catálogo de texto completo explícitamente si no hay un catálogo de texto completo predeterminado.

Puede hacer los pasos 2 y 3 en SQL Sever Management Studio. En el explorador de objetos, haga clic con el botón derecho en una tabla, seleccione el elemento de menú de Full-Text index y luego, seleccione el elemento del menú secundario Define Full-Text Index... 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.

Puede encontrar más información en MSDN


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

En su lugar, simplemente use LIKE que le dará resultados instantáneos sin la 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:



Hay una solución más para establecer la columna Texto completo en verdadero.

Estas soluciones, por ejemplo, no funcionaron para mí

ALTER TABLE news ADD FULLTEXT(headline, story);

Mi solución.

  1. Haga clic derecho sobre la mesa
  2. Diseño
  3. Haga clic con el botón derecho en la columna que desea editar
  4. Índice de texto completo
  5. Añadir
  6. Cerca
  7. Refrescar

PRÓXIMOS PASOS

  1. Haga clic derecho sobre la mesa
  2. Diseño
  3. Haga clic en la columna que desea editar
  4. En la parte inferior de mssql habrá una pestaña "Propiedades de columna"
  5. Especificación de texto completo -> (está indexado en texto completo) en verdadero.

Refrescar

Versión de mssql 2014


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, podría usar la declaración LIKE que no necesita ninguna configuración previa:

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

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


tiene que agregar el índice de texto completo en los campos específicos que desea buscar.

ALTER TABLE news ADD FULLTEXT(headline, story);

donde "noticias" son los campos de su tabla y "título, historia" que no habilitará para la búsqueda de texto completo