一、开启SQL Full-text服务:

保证 SQL Full-text Filter Daemon Launcher服务处于开启状态,不同版本SQLServer全文检索服务名称可能稍有不同,如果服务列表中没有这个服务,请使用SQLServer安装光盘安装“全文检索”组件。

二、 启用全文检索

执行SQL语句启用全文检索:Execute sp_fulltext_database 'enable'

三、设置全文语言为中文

在服务器->属性->高级中,设置默认全文语言为2052(中文)。

四、建立数据表

在需要全文检索的数据表中,必须有一列字符型的字段存放文件类型,例如建表语句中的FileType。必须有一列Varbinary(Max)类型的字段存放文件内容,例如建表语句中的FileContent。

建表SQL语句示例:

  1. CREATE TABLE SampleBlobTable
  2. (
  3. [PKID] int identity(1,1) primary key,
  4. [FileName] Nvarchar(255) null,
  5. [FileType] Nvarchar(32) null,
  6. [FileContent] VARBINARY(MAX) NULL,
  7. [AddTime] datetime default(getdate())
  8. )
CREATE TABLE SampleBlobTable
(
[PKID] int identity(1,1) primary key,
[FileName] Nvarchar(255) null,
[FileType] Nvarchar(32) null,
[FileContent] VARBINARY(MAX) NULL,
[AddTime] datetime default(getdate())
)

五、建立全文索引

步骤1 建立全文索引

在需要全文检索的数据表上点击右键->全文索引->定义全文索引。

步骤2 选择唯一索引

步骤3 选择表列

选择表列,本例中以FileType列标明文件格式,将文件存入数据库时须正确填写此字段,此字段中的数据内容包括“doc”、“txt”、“xls”等。

后续步骤无需更改默认值,点击下一步继续直至完成。

六、支持PDF文件

1.      安装 Adobe iFilter

Adobe iFilter6.0:

http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=2611&fileID=2457

Adobe iFilter9.0for 64bit:

http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=4025&fileID=3941

2.      执行SQL语句

execsp_fulltext_service 'load_os_resources', 1;

exec sp_fulltext_service'verify_signature', 0;

3.      重新启动SQLSERVER

4.      检查支持文件

执行下列语句:

select document_type,pathfrom sys.fulltext_document_typeswheredocument_type='.pdf',如查询结果为下图则表示成功,可以进行PDF的全文检索了。

l

图3 执行结果

七、查询语法及示例

5.      语法

CONTAINS ( {column| *} , '<contains_search_condition >' )

< contains_search_condition >::={< simple_term > | < prefix_term > | < generation_term > | < proximity_term > | < weighted_term > } | { ( <contains_search_condition > ) {AND | AND NOT | OR } < contains_search_condition > [ ...n] }

< simple_term > ::=word |" phrase "

< prefix term> ::= { "word * " | "phrase *"}

< generation_term > ::=FORMSOF ( INFLECTIONAL , < simple_term > [ ,...n ] )

< proximity_term > ::={< simple_term > | < prefix_term > } { { NEAR | ~ } { < simple_term > | < prefix_term >} } [ ...n ]

< weighted_term > ::=ISABOUT ( {{ <simple_term> | < prefix_term > | < generation_term > | < proximity_term > } [ WEIGHT ( weight_value ) ] } [ ,...n ] )

6.      示例

1.        查找文件内容含“合同”的数据。

select * from SampleBlobTable where contains(filecontent,'合同')

注意:如果查询条件中包含空格,查询条件需用双引号括起来,如'”合同”',否则视为语法错误。

2.        查找文件内容含“归档”或“标题”的数据。

select * from SampleBlobTable where contains(filecontent,'归档 OR标题')

注意:多个词之间用逻辑操作符连接 (包括 AND,AND NOT,OR)。如果词中包含空格,那么这个词要用双引号括起来。

3.        查找文件内容含“北京?站”的数据。

select * from SampleBlobTable where contains(filecontent,'北京Near站')

注意:上述SQL语句将返回包含“北京站”、“北京西站”、“北京东站”等“北京”与“站”无间隔或间隔一个汉字(如果是英文则为一个单词)的数据,不会包含“北京东南站”的数据。

4.        查找所有开头字母为”hu”的数据。

select * from SampleBlobTable wherecontains(filecontent,'hu*')

注意:上述SQL语句将返回包含”human”、”hungry”等单词的数据,此语法只针对英文有效,针对中文“*”符号无论有无,效果均相同。

5.        加权查询

select * from SampleBlobTable where contains(filecontent,'ISABOUT (city weight (.8),county weight (.4))')

注意:上述SQL语将将针对city和county两个词进行不同权重的查询,权重不同将影响返回数据集的显示顺序(如果限定返回数量,则间接影响是否返回数据)。

6.        多态查询

select * from SampleBlobTable where contains(filecontent,'FORMSOF (INFLECTIONAL,dry)')

注意:查询将返回包含”dry”,”dried”,”drying”等数据,针对英语有效。

附:文档修改历史

内容

修改人

时间

备注

创建

卞吉东

2012-03-29

 

增补

卞吉东

2012-04-01

增加支持PDF文件方法

SQLserver2008全文检索使用方法的更多相关文章

  1. sqlserver2008 死锁解决方法及性能优化方法

    sqlserver2008 死锁解决方法及性能优化方法 原文: http://blog.csdn.net/kuui_chiu/article/details/48621939 十步优化SQL Serv ...

  2. SQLServer2008 全文检索摘记

    最近在做全文搜索的内容,google了一下全文检索,发现了一些问题,现在总结如下: 全文索引和查询概念(摘自SQL 联机帮助)SQL Server 2008 为应用程序和用户提供了对 SQL Serv ...

  3. MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持

    背景:搞个个人博客的全文搜索得用like啥的,现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了,刚查了下目前版本号都到MySQL Community Server 5.6.1 ...

  4. 【SQL Server性能优化】运用SQL Server的全文检索来提高模糊匹配的效率

    原文:[SQL Server性能优化]运用SQL Server的全文检索来提高模糊匹配的效率 今天去面试,这个公司的业务需要模糊查询数据,之前他们通过mongodb来存储数据,但他们说会有丢数据的问题 ...

  5. Lucene 基础理论 (zhuan)

    http://www.blogjava.net/hoojo/archive/2012/09/06/387140.html**************************************** ...

  6. 搜索引擎框架之ElasticSearch基础详解(非原创)

    文章大纲 一.搜索引擎框架基础介绍二.ElasticSearch的简介三.ElasticSearch安装(Windows版本)四.ElasticSearch操作客户端工具--Kibana五.ES的常用 ...

  7. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  8. [转]SQLServer2008日志文件无法收缩处理方法

    问题描述     发现有的数据库日志文件太大,无论如何收缩执行几次SQL语句都不行.事务日志达30+G,而且使用常规的截断.收缩方法均无法减小日志物理文件的尺寸,经过一番寻找,终于找到了解决方法. 查 ...

  9. SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原

    sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...

随机推荐

  1. CSDN博客积分规则

    1.博客积分规则 博客积分是CSDN对用户努力的认可和奖励,也是衡量博客水平的重要标准.博客等级也将由博客积分唯一决定.积分规则具体如下: 每发布一篇原创或者翻译文章:可获得10分: 每发布一篇转载文 ...

  2. mysql安装优化

    安装centos7 安装mysql解决方案1 安装mariadb解决方案2 官网下载安装mysql-server时区批量配置编码远程连接my.cnf简版的参数说明核心配置参数升级版mysql存储引擎M ...

  3. sync or async connect redis in golang

    Head of head 在golang的整个生态里,redis client lib全部都使用多连接或者连接池.这是让人难以理解的,所以我和xiaofei一起写了一个同时支持同步和异步的redis ...

  4. stm32寄存器版学习笔记07 ADC

    STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...

  5. BZOJ2946 Poi2000 公共串 【后缀自动机】

    Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 任务: l 读入单词 l 计算最长公共子串的长度 l 输出结果 Input 文件的第一行是整数 n,1<=n& ...

  6. 20179223《Linux内核原理与分析》第四周学习笔记

    补交第三周作业 完成一个简单的时间片轮转多道程序内核 1.使用实验楼的虚拟机打开shell,用cd LinuxKernel/linux-3.9.4进入linux-3.9.4. 2.执行命令qemu - ...

  7. 20179223《Linux内核原理与分析》第三周学习笔记

    测试3的实验: 1. 用gcc -g编译vi输入的代码 2. 在main函数中设置一个行断点 3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点 4. 提交调 ...

  8. Quartz 2D编程指南(2) - 图形上下文

    一个Graphics Context表示一个绘制目标.它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息.Graphics Context定义了基本的绘制属性,如颜色.裁减区域.线条宽度和样式信息 ...

  9. win7下安装ubuntu14.04lts 双系统

    首先,在win7下的硬盘管理 压缩出一块空闲的分区,即压缩卷之后,不做任何操作. 并且确保该空闲卷是“基本”类型     不是的话,参考http://www.jianshu.com/p/2f07312 ...

  10. poj 1637 Sightseeing tour——最大流+欧拉回路

    题目:http://poj.org/problem?id=1637 先给无向边随便定向,如果一个点的入度大于出度,就从源点向它连 ( 入度 - 出度 / 2 ) 容量的边,意为需要流出去这么多:流出去 ...