创建SQL Server全文检索的2方案

数据库 SQL Server
我们今天主要向大家讲述的是创建SQL Server全文检索的正确操作2方案,以及对其在实际操作中遇到的问题的处理措施。

此文章主要向大家讲述的是创建SQL Server全文检索的正确操作方案,如果你对创建SQL Server全文检索的正确操作步骤有兴趣了解的话,以下的文章你就可以对其进行点击观看了,以下就是文章的主要方案的描述。

方法一:先启动全文索引服务,查看当前数据库的状态SELECT DATABASEPROPERTY ('pubs','IsFulltextEnabled'),打开FullText功能sp_fulltext_databse 'enable',关闭此功能sp_fulltext_databse 'disable',在所有创建的表上建唯一索引(若已有主键索引可省),在表上点右键进入定义全文索引向导创建。

方法二:1、首先创建一个全文目录,一个全文目录可以包含多个全文索引,但一个全文索引只能用于构成一个全文目录。每个数据库可以不包含全文目录或包含多个全文目录。as default参数表明把此全文目录作为默认的全文目录。

  1. Create fulltext catalog DocumentCatalog as default 

2、然后创建唯一非聚集索引。

 

  1. create unique index T_DocumentsContent_VerID on T_DocumentsContent(VerID) 

这个一般把你要全文索引的表上的主键作为唯一非聚集索引。该索引将强制插入列中的数据具有唯一性。一般都是主键符合这个要求。

 

3、***一步就是创建全文索引

  1. Create FULLTEXT INDEX ON T_DocumentsContent(DOCUCONTENT TYPE COLUMN ExtendedName)  
  2. key index T_DocumentsContent_VerID on DocumentCatalog  
  3. with change_tracking auto 

T_DocumentsContent:用于全文索引的表明

 

DocuContent:用于SQL Server全文检索的字段

 

如果用于SQL Server全文检索的字段是二进制流文件,那么要通过指定这个二进制流文件的扩展名由哪个列提供数据。如上例的Type Column ExtendedName,表明DocuContent的类型由ExtendedName列提供

 

key index用来指定全文索引表唯一键索引的名称

 

on DocumentCatalog:表明这个全文索引是建立在哪个全文目录上

 

with Change_Tracking:指定 SQL Server 是否维护一份对索引数据的全部更改的列表。更改跟踪不会记录通过 WRITETEXT 和 UPDATETEXT 进行的数据更改。他有几个选项

 

1. MANUAL: 指定是使用 SQL Server 代理按计划传播更改跟踪日志,还是由用户手动进行传播。

 

2.AUTO:指定在关联的表中修改了数据时,SQL Server 自动更新全文索引。默认值为 AUTO。

 

3.OFF [ ,NO POPULATION] 指定 SQL Server 不保留对索引数据的更改的列表。仅当ANGE_TRACKING 为 OFF 时,才能使用 NO POPULATION 选项。如果指定了 NO POPULATION,则 SQL Server 在创建索引后不会对其进行填充。

只有在用户使用 START FULL 或 INCREMENTAL POPULATION 子句执行 ALTER FULLTEXT INDEX 命令后,才会填充索引。如果未指定 NO POPULATION,则 SQL Server 创建索引后将对其进行完全填充

 

当然如果需要使用全文索引需要把全文索引服务启动,就是SQL Server FullText Search这个服务。注意Sql Express版本不能使用全文索引。

 

***剩下如何进行全文检索的查询了。在查询种我们不能使用like关键字来进行SQL Server全文检索,应该使用Contains谓词,他的***个参数是你要全文检索的列名,可以指定多个列,用都好分割,并且必须用小括号括起来,第二个参数是需要搜索的文本,第二个参数前后必须用单引号包含起来,里面查询的文本可用引号包含,并且可以使用通配符和条件语句,如

where Contains(a.Content, '"中国*" or "武汉"')

条件语句可以用符号来代理如AND可以用&来代替,具体参看SQLServer的帮助文档。

 

第三个参数是查询的语言。如果一个列里面存储了多种语言,允许用户指定搜索的语言。

除了Contains谓词可以用于全文检索FreeText也可以进行SQL Server全文检索,但次谓词用于搜索含有基于字符的数据类型的列,好像不能搜索二进制流的列,但帮助文档却又说支持Image的列。但是FreeText的搜索精度没有Contains的谓词高,推荐使用Contains谓词。

【编辑推荐】

  1. SQL Server分布式事务的6解决方案
  2. SQL Server数据库与EXCEL数据导入与导出
  3. SQL Server 2000 安装时的一些症状归纳
  4. SQL Server加密的实际操作步骤
  5. SQL Server 2005模糊查找包的最简单模式

 

 

 

责任编辑:佚名 来源: 51CTO.com
相关推荐

2010-07-21 12:24:45

SQL Server表

2010-07-16 15:42:32

SQL Server

2010-07-09 10:36:22

SQL Server

2010-11-10 14:18:15

SQL SERVER全

2010-07-05 09:14:37

SQL Server数

2010-07-08 13:20:05

SQL Server删

2010-07-01 12:38:26

SQL Server表

2010-10-20 10:55:54

SQL Server全

2009-07-06 18:18:41

SQL Server全

2010-07-21 09:58:21

SQL Server全

2011-04-22 10:40:52

SQL ServerWord检索

2010-07-01 10:20:41

SQL Server

2010-07-01 12:44:52

SQL Server数

2010-05-18 16:58:31

MySQL数据库

2010-06-17 10:56:57

SQL Server数

2011-08-03 10:40:17

SQL Server数全文检索

2015-07-13 11:39:25

SphinxSQL

2010-08-18 14:36:32

安装DB2 管理软件

2011-04-18 11:00:12

SQL Server全文索引

2010-11-10 14:06:44

SQL Server全
点赞
收藏

51CTO技术栈公众号