Dot*_*row 77 sql t-sql sql-server full-text-search sql-server-2008
我在SQL Server 2008 R2数据库中收到以下错误:
不能在表或索引视图'tblArmy'上使用
CONTAINS
或FREETEXT
谓词,因为它不是全文索引的.
Ale*_*Aza 104
确保已安装全文搜索功能.
创建全文搜索目录.
use AdventureWorks
create fulltext catalog FullTextCatalog as default
select *
from sys.fulltext_catalogs
Run Code Online (Sandbox Code Playgroud)创建全文搜索索引.
create fulltext index on Production.ProductDescription(Description)
key index PK_ProductDescription_ProductDescriptionID
Run Code Online (Sandbox Code Playgroud)
在创建索引之前,请确保:
- 您还没有表上的全文搜索索引,因为表上只允许一个全文搜索索引
- 表上存在唯一索引.索引必须基于单键列,不允许NULL.
- 存在全文目录.如果没有默认的全文目录,则必须显式指定全文目录名称.
您可以在SQL Sever Management Studio中执行步骤2和3.在对象资源管理器中,右键单击表,选择Full-Text index
菜单项,然后选择Define Full-Text Index...
子菜单项.全文索引向导将指导您完成整个过程.如果您还没有,它还会为您创建一个全文搜索目录.
您可以在MSDN上找到更多信息
Moh*_*and 64
解决方法CONTAINS
:如果您不想在列上创建全文索引,并且性能不是您的优先级之一,则可以使用LIKE
不需要任何先前配置的语句:
示例:查找包含字母Q的所有产品:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
Run Code Online (Sandbox Code Playgroud)
Ash*_*ada 19
您必须Full-Text-Index
在数据库中的所有表上定义您需要使用的查询,CONTAINS
这将需要一段时间.
而只需使用LIKE
它将为您提供即时结果,而无需调整表的任何设置.
例:
SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'
Run Code Online (Sandbox Code Playgroud)
用得到相同的结果CONTAINS
可以与获得LIKE
.