SQLserver2008全文检索使用方法
一、开启SQL Full-text服务:
保证 SQL Full-text Filter Daemon Launcher服务处于开启状态,不同版本SQLServer全文检索服务名称可能稍有不同,如果服务列表中没有这个服务,请使用SQLServer安装光盘安装“全文检索”组件。
二、 启用全文检索
执行SQL语句启用全文检索:Execute sp_fulltext_database 'enable'
三、设置全文语言为中文
在服务器->属性->高级中,设置默认全文语言为2052(中文)。
四、建立数据表
在需要全文检索的数据表中,必须有一列字符型的字段存放文件类型,例如建表语句中的FileType。必须有一列Varbinary(Max)类型的字段存放文件内容,例如建表语句中的FileContent。
建表SQL语句示例:
- 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())
- )
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全文检索使用方法的更多相关文章
- sqlserver2008 死锁解决方法及性能优化方法
sqlserver2008 死锁解决方法及性能优化方法 原文: http://blog.csdn.net/kuui_chiu/article/details/48621939 十步优化SQL Serv ...
- SQLServer2008 全文检索摘记
最近在做全文搜索的内容,google了一下全文检索,发现了一些问题,现在总结如下: 全文索引和查询概念(摘自SQL 联机帮助)SQL Server 2008 为应用程序和用户提供了对 SQL Serv ...
- MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持
背景:搞个个人博客的全文搜索得用like啥的,现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了,刚查了下目前版本号都到MySQL Community Server 5.6.1 ...
- 【SQL Server性能优化】运用SQL Server的全文检索来提高模糊匹配的效率
原文:[SQL Server性能优化]运用SQL Server的全文检索来提高模糊匹配的效率 今天去面试,这个公司的业务需要模糊查询数据,之前他们通过mongodb来存储数据,但他们说会有丢数据的问题 ...
- Lucene 基础理论 (zhuan)
http://www.blogjava.net/hoojo/archive/2012/09/06/387140.html**************************************** ...
- 搜索引擎框架之ElasticSearch基础详解(非原创)
文章大纲 一.搜索引擎框架基础介绍二.ElasticSearch的简介三.ElasticSearch安装(Windows版本)四.ElasticSearch操作客户端工具--Kibana五.ES的常用 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- [转]SQLServer2008日志文件无法收缩处理方法
问题描述 发现有的数据库日志文件太大,无论如何收缩执行几次SQL语句都不行.事务日志达30+G,而且使用常规的截断.收缩方法均无法减小日志物理文件的尺寸,经过一番寻找,终于找到了解决方法. 查 ...
- SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原
sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...
随机推荐
- (转) MapReduce Design Patterns(chapter 5 (part 2))(十)
Replicated Join Pattern Description 复制join是一种特殊的join,用于一个大数据和许多小数据集map端执行的情况. Intent 这种模式能够消除reduce阶 ...
- 使用DaoCloud持续构建docker镜像,自动化部署
我们学会了在主机上安装部署docker,也学会了构建自己的docker镜像和容器,启停也都会用了,下一步就需要持续构建发布docker的技能了. 我们希望能在代码提交后,有个远程服务能自动开始构建项目 ...
- 关于Fildder更改ip简单配置
之前由于我们公司之前的域名备案 所以临时购买了一个域名主机,可能你如果不配置的话有时候看不到你自己app一些抓包信息具体分为以下几步 配置Filter过滤器记得勾选 第一次进入的时候 2.然后我们再H ...
- 桶排序bucket sort
桶排序 (Bucket sort)或所谓的箱排序的原理是将数组分到有限数量的桶子里,然后对每个桶子再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后将各个桶中的数据有序的 ...
- tableView 三级展开 嵌入collocationView
目前有个需求,需要在写一个文件夹结构的类型,tableView分类显示 collocationView 遇到的问题是:tableView cell中嵌套了 collocationView 后,coll ...
- IOS开发 警告 All interface orientations must be supported unless the app requires full screen.
在IOS开发中遇到警告 All interface orientations must be supported unless the app requires full screen. 只要勾上R ...
- js之验证码倒计时功能
<!DOCTYPE html> <html > <head> <meta http-equiv="Content-Type" conten ...
- HDU - 5628:Clarke and math (组合数&线性筛||迪利克雷卷积)
题意:略. 思路:网上是用卷积或者做的,不太会. 因为上一题莫比乌斯有个类似的部分,所以想到了每个素因子单独考虑. 我们用C(x^p)表示p次减少分布在K次减少里的方案数,由隔板法可知,C(x^p)= ...
- Linux下Eclipse配置安装 PyDev(Pydev插件一直不能成功,安装这个插件失败的问题)
pydev插件安装方式如果采取从网络上下载,然后解压到eclipse中文件夹到方式,运行到时候可能会导致重启eclipse后根本看不到这个插件! 原因以及解决方式,看下面! 转自:http://ww ...
- 《DSP using MATLAB》示例Example 8.8
%% ------------------------------------------------------------------------ %% Output Info about thi ...