No se puede usar un predicado de CONTENIDO o TEXTO LIBRE en una tabla o vista indexada porque no está indexado en texto completo
Estoy recibiendo el siguiente error en mi base de datos SQL server 2008 R2:
No puede usar un predicado
CONTAINS
oFREETEXT
en la tabla o vista indexada 'tblArmy' porque no está indexado en texto completo.
6 answers
-
Asegúrese de tener instalada la función de búsqueda de texto completo.
-
Crear catálogo de búsqueda de texto completo.
use AdventureWorks create fulltext catalog FullTextCatalog as default select * from sys.fulltext_catalogs
-
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:
-usted no tiene ya el índice de búsqueda de texto completo en la tabla como solo un índice de búsqueda de texto completo permitido en una tabla
- existe un índice único en la tabla. El índice debe basarse en una columna de clave única, que hace no permitir 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 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 Full-Text index
elemento de menú y luego Define Full-Text Index...
elemento de 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 no tiene ninguno aun.
Puede encontrar más información en MSDN
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-14 19:28:45
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 la instrucción LIKE
que no necesita ninguna configuración previa:
Ejemplo: encuentra todos los productos que contienen la letra Q:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-04 10:05:46
Debe definir Full-Text-Index
en todas las tablas de la base de datos donde necesite usar una consulta con CONTAINS
que tomará algún tiempo.
En su lugar, simplemente use 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
puede obtenerse con LIKE
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-04 13:13:42
Es posible que necesite habilitar la tabla para la indexación de texto completo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-14 16:40:41
Debe agregar índice de texto completo en los campos específicos que desea buscar.
ALTER TABLE news ADD FULLTEXT(headline, story);
Donde "news "es su tabla y" headline, story " campos que no habilitará para la búsqueda de texto completo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-14 16:50:31
Hay una solución más para establecer el texto completo de la columna en true.
Estas soluciones, por ejemplo, no funcionaron para mí
ALTER TABLE news ADD FULLTEXT(headline, story);
Mi solución.
- Haga clic derecho en la tabla
- Diseño
- Haga clic derecho en la columna que desea editar
- Índice de texto completo
- Añadir
- Cerrar
- Actualizar
PRÓXIMOS PASOS
- Haga clic derecho en la tabla
- Diseño
- haga Clic en la columna que desea editar
- El parte inferior de mssql que habrá pestaña "Propiedades de columna"
- Full-text Specification -> (Is Full-text Indexed) establecido en true.
Actualizar
Versión de mssql 2014
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-11 08:15:12