在表或索引视图上不能使用CONTAINS或FREETEXT谓词,因为它不是全文索引

我在我的SQL Server 2008 R2数据库中出现以下错误:

不能在表或索引视图'tblArmy'上使用CONTAINSFREETEXT谓词,因为它没有全文索引。

  1. 确保安装了全文searchfunction。

    全文搜索设置

  2. 创build全文search目录。

      use AdventureWorks create fulltext catalog FullTextCatalog as default select * from sys.fulltext_catalogs 
  3. 创build全文search索引。

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

    在创build索引之前,请确保:
    – 由于在表格上只允许有一个全文search索引,因此表格上没有全文search索引
    – 表格中存在唯一的索引。 该索引必须基于单键列,不允许NULL。
    – 全文目录存在。 如果没有默认全文目录,则必须明确指定全文目录名称。

您可以在SQL Sever Management Studio中执行第2步和第3步。 在对象浏览器中,右键单击表格,selectFull-Text index菜单项,然后Define Full-Text Index...子菜单项。 全文索引向导将指导您完成整个过程。 如果您还没有,也会为您创build一个全文search目录。

在这里输入图像说明

你可以在MSDNfind更多信息

CONTAINS的解决方法:如果您不想在列上创build全文索引,并且性能不是您的优先事项之一,则可以使用不需要任何预先configuration的LIKE语句:

例如:查找包含该字母的所有产品问:

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

您必须在需要使用CONTAINS查询的数据库的所有表上定义Full-Text-Index ,这将需要一些时间。

相反,只需使用LIKE为您提供即时结果,而无需调整表格的任何设置。

例:

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

使用LIKE可以获得与CONTAINS相同的结果。

看结果: 在这里输入图像说明

您可能需要启用全文索引表 。

您必须在您要search的特定字段上添加全文索引。

 ALTER TABLE news ADD FULLTEXT(headline, story); 

其中“新闻”是你的桌子和“标题,故事”领域,你不会启用全文search

还有一个解决scheme将列全文设置为true。

这些解决scheme,例如没有为我工作

 ALTER TABLE news ADD FULLTEXT(headline, story); 

我的解决scheme

  1. 右键单击表格
  2. devise
  3. 右键点击你想编辑的列
  4. 全文索引
  5. 刷新

下一步

  1. 右键单击表格
  2. devise
  3. 点击你想编辑的列
  4. 在mssql的底部,会出现选项卡“列属性”
  5. 全文指定 – >(全文索引)设置为true。

刷新

版本的mssql 2014