中国数据急救中心 全国连锁组织:南京|武汉|长沙|重庆|海口|镇江|无锡|南通|盐城|蚌埠|苏州|淮安|泰州|张家港|宿迁|合肥|马鞍山.热线:4006184118
数据恢复 信息安全 电子取证

SQL Server 全文索引使用步骤及语句

USE Ask_91 --1、为数据库启用全文索引 EXEC sp_fulltext_database 'enable' --2、创建全文目录 --(此处若出错“未安装全文搜索或无法加载某一全文组件”,则可能是未启动或未安装此服务) EXEC sp_fulltext_catalog 'Ask91Fable', 'create', 'D:\Data2005\Ask_91_Index' --3、指定要进行全文搜索的表 --(可能出错“...全文搜索键必须是唯一的、不可为空的、单列的索引,并且该索引不是离线的...”) --(这个表必须有一个唯一索引[主键是可以的],) EXEC sp_fulltext_table 'Asks', 'create', 'Ask91Fable', 'PK_Ask'--唯一索引名称 --4、向全文目录中添加列 EXEC sp_fulltext_column 'Asks', 'Subject', 'add' EXEC sp_fulltext_column 'Asks', 'Detail', 'add' --5、激活全文目录 EXEC sp_fulltext_table 'Asks', 'activate' --填充 EXEC sp_fulltext_table 'Asks', 'start_full'--完全填充 --EXEC sp_fulltext_table 'Asks', 'start_incremental'--增量填充 --重建(重建之后应该完全填充) --EXEC sp_fulltext_catalog 'Ask91Fable', 'rebuild' --调用(100万数据,) --SELECT TOP 1 * FROM Asks SELECT ID FROM Asks WHERE Subject LIKE '%NET小结%' OR Detail LIKE '%NET小结%'-- 2分33秒 SELECT ID FROM Asks WHERE CONTAINS (Asks.*,'NET小结')-- 0分40秒 SELECT ID FROM Asks WHERE Subject LIKE '%NET小结%' -- 0分42秒 SELECT ID FROM Asks WHERE CONTAINS (Asks.Subject,'NET小结')-- 0分26秒 ------------------------------------------------------------以下抄来的------------------------------------------------ -- 1:打开全文索引功能 --execute sp_fulltext_database 'enable' --2:创建全文索引Search --execute sp_fulltext_catalog 'Search','Create' --3:命名SearchID成唯一的、不可为空的、单列的索引。 --create UNIQUE index SearchID on Question(ID) --4:在Question上创建全文索引 --execute sp_fulltext_table Question,'create','Search','SearchID' --5:设置全文索引列名Title --execute sp_fulltext_column 'Question','Title','add' --6:设置全文索引列名Content --execute sp_fulltext_column 'Question','Content','add' --7:建立全文索引 --execute sp_fulltext_table 'Question','activate' --8:填充全文索引目录 --execute sp_fulltext_catalog 'Search','start_full' --9:检查全文目录填充情况 --WHILE FulltextCatalogProperty('Search','PopulateStatus')<>0 --BEGIN --如果全文目录正处于填充状态,则等待30秒后再检测一次 --WAITFOR DELAY '0:0:30' --END --10:用Contains查询Title列或Content列中包含有a或s字符串数据 --SELECT Title,Content FROM Question where Contains(Title,'调用') or contains(Content,'调用') --11:用Freetext查询Title列或Content列中包含有a或s字符串数据 --select Title,Content from Question where freetext(*,'asd')