【发布时间】:2011-08-25 14:02:12
【问题描述】:
我的 SQL Server 2008 R2 数据库出现以下错误:
不能在表或索引视图“tblArmy”上使用
CONTAINS或FREETEXT谓词,因为它不是全文索引。
【问题讨论】:
-
你真的创建了全文目录吗?
标签: sql sql-server tsql sql-server-2008 full-text-search
我的 SQL Server 2008 R2 数据库出现以下错误:
不能在表或索引视图“tblArmy”上使用
CONTAINS或FREETEXT谓词,因为它不是全文索引。
【问题讨论】:
标签: sql sql-server tsql sql-server-2008 full-text-search
创建全文搜索目录(如果需要)
首先检查是否有任何目录已经存在
select *
from sys.fulltext_catalogs
如果没有找到目录,则创建一个
use [DatabaseName]
create fulltext catalog FullTextCatalog as default
您可以验证目录是否以与上述相同的方式创建
创建全文搜索索引。
create fulltext index on Production.ProductDescription(Description)
key index PK_ProductDescription_ProductDescriptionID
在创建索引之前,请确保:
- 您还没有在表格上拥有全文搜索索引,因为表格上只允许一个全文搜索索引
- 表上存在唯一索引。索引必须基于单键列,不允许 NULL。
- 存在全文目录。如果没有默认的全文目录,则必须明确指定全文目录名称。
您可以在 SQL Sever Management Studio 中执行第 2 步和第 3 步。在对象资源管理器中,右键单击一个表,选择Full-Text index 菜单项,然后选择Define Full-Text Index... 子菜单项。全文索引向导将引导您完成整个过程。如果您还没有全文搜索目录,它还会为您创建一个全文搜索目录。
您可以在MSDN找到更多信息
执行完这些步骤后,您需要几分钟的时间,以便创建全文搜索索引(这取决于表和列数据的大小)
【讨论】:
CONTAINS 的解决方法:如果您不想在列上创建全文索引,并且性能不是您的优先事项之一,您可以使用不需要任何事先配置的 LIKE 语句:
示例:查找所有包含字母 Q 的产品:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
【讨论】:
【讨论】:
您必须在要搜索的特定字段上添加全文索引。
ALTER TABLE news ADD FULLTEXT(headline, story);
“新闻”是您的表格和“标题、故事”字段,您不会启用全文搜索
【讨论】:
还有另一种解决方案可以将列全文设置为 true。
例如,这些解决方案对我不起作用
ALTER TABLE news ADD FULLTEXT(headline, story);
我的解决方案。
下一步
刷新
mssql 2014 版本
【讨论】:
Select * from table
where CONTAINS([Column], '"A00*"')
将与 % 相同
where [Column] Like 'A00%'
【讨论】: