Recibo el siguiente error en mi base de datos SQL Server 2008 R2:
No se puede usar un predicado
CONTAINS
oFREETEXT
en la tabla o vista indexada 'tblArmy' porque no tiene un índice de texto completo.
sql
sql-server
tsql
sql-server-2008
full-text-search
DotnetGorrión
fuente
fuente
Respuestas:
Asegúrese de tener instalada la función de búsqueda de texto completo.
Cree un catálogo de búsqueda de texto completo.
use AdventureWorks create fulltext catalog FullTextCatalog as default select * from sys.fulltext_catalogs
Cree 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:
- no tenga 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 una 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 de forma explícita si no hay un catálogo de texto completo predeterminado.
Puede realizar los pasos 2 y 3 en SQL Sever Management Studio. En el explorador de objetos, haga clic derecho en una tabla, seleccione el
Full-Text index
elemento del menú y luego elDefine 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.Puede encontrar más información en MSDN
fuente
Una solución alternativa 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 laLIKE
declaración que no necesita ninguna configuración previa:Ejemplo: busque todos los Productos que contengan la letra Q:
SELECT ID, ProductName FROM [ProductsDB].[dbo].[Products] WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
fuente
Debe definir
Full-Text-Index
en todas las tablas de la base de datos dónde necesita usar una consulta con laCONTAINS
que tomará algún tiempo.En su lugar, puede usar el
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 conLIKE
.ver el resultado:
fuente
Es posible que deba habilitar la tabla para la indexación de texto completo .
fuente
debe agregar un índice de texto completo en los campos específicos que desea buscar.
ALTER TABLE news ADD FULLTEXT(headline, story);
donde "noticias" es su tabla y los campos "título, historia" que no habilitará para la búsqueda de texto completo
fuente
Hay una solución más para establecer el texto completo de la columna en verdadero.
Esta solución, por ejemplo, no funcionó para mí.
ALTER TABLE news ADD FULLTEXT(headline, story);
Mi solución.
PRÓXIMOS PASOS
Actualizar
Versión de mssql 2014
fuente
Select * from table where CONTAINS([Column], '"A00*"')
actuará como% igual que
fuente