Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008
Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008
全文索引操作
4.全文索引和like语句比较 1
5.倒排索引 inverted index 1
2.SQL Server 2008全文检索 2
3.Lucene全文检索 3
一般情况,使用SQL Server中的全文索引,经过大体4个步骤: 4
Mssql2008的全文索引操作(attilax验证) 5
查看全文index使用大小 5
查看表行数与体积大小 6
参考 6
4.全文索引和like语句比较
当然是全文索引的执行效率高.
一般全文索引使用的是倒排索引,能够支持多关键字的索引,而LIKE只有前缀匹配时才能使用索引,否则就是全表扫描,效率当然很低
但全文索引存在填充问题,需要在增加内容后进行增量填充,否则检索不到新增的内容的。Sql Server 2008里可采用基于更改跟踪的填充, 速度飞快, 几乎可以认为就是实时增量填充了.
作者::老哇的爪子Attilax艾龙,EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
5.倒排索引 inverted index
为什么Sql server全文检索和Lucune全文检索速度快呢, 因为它和大多数搜索引擎一样, 都使用了倒排索引 inverted index
2.SQL Server 2008全文检索
为了提高效率, 换用sql server的全文检索, 怎么建全文检索就此略去, 不提, 只看查询方法.
例如: select * from table where contains(ProductDesc, '*cad*')
它查询的效率很高, 支持中文分词(但好不好就另说了), 但缺点竟然是在英文查询上, 如果想模糊查询带cad三个字母的数据, 它只能搜索出以cad为完整单词的数据, 例如: 它能查出abc cad , cad def, 或者cad, 它不能查出autocad这种字母连在一起的数据, 也就是说, sql server的全文检索的英文分词是空格, 要想查连在一起的英文词, 它办不到, 得另寻第三方的全文索引了, ms如果在这里开个可扩展的口子多好, 可惜了.
索引的更新填充问题: 创建好全文检索就自动来一次完全填充, 如果在跟踪更改处选择自动, 全文检索就会采用基于更改跟踪的填充, 原表数据一旦有改动, 就会从后台悄悄地传播过来, 自动的更新全文索引. 具体可参考http://msdn.microsoft.com/zh-cn/library/ms142575.aspx
在更新全文索引之前这段时间, 搜不到新录入但未收入全文索引的数据, 但like可查到. 虽然不是实时的, 但是经过测试, 我发现这个更新速度非常之快, 几乎一改原表, 全文索引就更新了, 所以我觉得可以认为实时的, 估计sqlserver内部应该是用观察者模式实现这个功能的.
另外, contains包含的列都必须来自同一个表, 不能跨表, 例如where contains(a.ProductDesc, b.ProductName, '*cad*'), 这样是不行的.
3.Lucene全文检索
SQL server全文检索不灵了, 只能找第三方的方案了, 首当其冲的就是Lucene了, 但在.net下, Lucene却很不顺当.
NLucene是将 Lucene 从 Java 移植到 .NET 的一个 SourceForge 项目,它从 Lucene 1.2 版本转化而来, 但2002年就停止更新了.
因为 NLucene 项目到2002年就没有再推出新的版本,可Lucene 却一直在发展,于是有人把Lucene 1.3版移植到.NET就成了Lucene .NET,但是Lucene .Net发展到2.0版的时候变成了商业化的产品,脱离了开源项目, 听说现在进了孵化器已停止开发了, 但上官网http://incubator.apache.org/lucene.net/download.html上看, 还仍然在更新中似乎没有停止, 最新开源的版本是2.9.2, 发布日期是2011年5月6日, 他们还在准备2.9.4版.
受到Lucene.Net脱离开源项目的影响,有人为了继续发展开源.Net搜索引擎,于是在Lucene.Net的原有基础上继续发展该项目,但是名字改成了DotLucene以区别于Lucene.Net。但现在打开官网一看, 得, 又停止了. 看来, 只能用Lucene.Net2.0这最后一个开源版本了.
索引的更新填充问题: 也是要隔一段时间更新一次索引, 也是不可实时更新的, 需要定期更新填充才可以, 如果需要频繁更新推荐删除旧的然后重建索引.
一般情况,使用SQL Server中的全文索引,经过大体4个步骤:
1). 安装full text search全文索引服务;
2). 为数据表建立full text catalog全文索引目录;
3). 进行full text catalog的population操作(使全文索引与数据表内容同步);
4). 使用全文索引进行查询。
Mssql2008的全文索引操作(attilax验证)
1.启动SQL Full-text Filter Daemon Launcher (MSSQLSERVER) 服务
2.建设:::索引表格>>ritkey>>全文index>>创建fulltxt 或者
Db>存储>>全文目录>新建全文目录
3..增添计划>>cpu 空闲的.....
4. 4. 使用索引功能:
select * from mybbs_Table where Contains(col2,'"windows"');
速度还凑火..
查看全文index使用大小
增添状态:::正在处理通知 ..表明目前等候插入....平常状态..
目录大小:::5g
查看表行数与体积大小
表格属性>>存储...>>>35G
参考
Lucene.Net, SQL Server 2008全文检索, Like模糊查询的一点心得 - BobLiu - 博客园.html
使用SQL Server中的全文索引_知识库_博客园.html
Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008相关推荐
- Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动、停止、重新启动...
Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动.停止.重新启动 能够通过"netstat ...
- 13 【操作mysql数据库】
13 [操作mysql数据库] 1.mysql 介绍 付费的商用数据库: Oracle,典型的高富帅: SQL Server,微软自家产品,Windows定制专款: DB2,IBM的产品,听起来挺高端 ...
- PC软件开发技术之三:C#操作SQLite数据库
我们在开发应用是经常会需要用到一些数据的存储,存储的方式有多种,使用数据库是一种比较受大家欢迎的方式.但是对于一些小型的应用,如一些移动APP,通常的数据库过于庞大,而轻便的SQLite则能解决这一问 ...
- Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道
Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...
- Atitit.软件兼容性原理与实践 v3 q326.docx
Atitit.软件兼容性原理与实践 v3 q326.docx 1. 架构兼容性1 2. Api兼容性1 2.1. 新api vs 修改旧的api1 3. Web方面的兼容性(js,html)1 3 ...
- 穆穆推荐-软件销售行业软件公司销售参考操作手册-之5-软件行业客户分类及销售人员激励
穆穆推荐-软件销售行业软件公司销售参考操作手册-之5-软件行业客户分类及销售人员激励 软件行业客户分类及销售人员激励 一. 软件行业客户分类及销售人员激励 客户分级是非常有必要的,如果一个销 ...
- 利用PDF编辑软件给PDF添加页码的操作全过程
还记得小时候,在微机电脑课时.老师在教给大家一项操作的时候,老师肯定会详细的,一步一步的将操作全过程展示给大家.老师们如此严谨其,目的也就是为了防止学生们再操作中因为细小的问题,而导致全盘皆错.一步一 ...
- iapp退出软件按钮代码_昆仑通态软件应用(23):酒店触摸屏点菜系统的设计(案例)...
点击上方蓝字关注我哦! 01•实训目的 •1. 学习使用MCGS嵌入版组态软件设计实现对酒店触摸屏点菜系统的控制. •2. 用TP717BMCGS触摸屏来控制西门子S7-200的PLC进行工作. •3 ...
- 六、libinput功能介绍(二、触摸板软件按钮及模拟鼠标中键)
这里的触摸板指的是没有独立物理按钮的触摸板,而是把整个触摸板作为一个独立的"按钮".左键和右键行为通过手指点击的区域来区分,或者通过同时按压触摸板手指的数量来区分.原文中的&quo ...
- 点击按钮取GridView当前被操作行的数据
在GridView里加一个模版列,里面放一些按钮,然后呢,点击这些按钮的时候,要可以取到GridView当前被点击的行的字段里的内容 一般有两种情况,只需要取一个字段的值,和要取多个字段的值,其实都是 ...
最新文章
- Ubuntu16.04里django的配置和安装
- how is batch operation handled in backend
- JAVA 8 StreamAPI 和 lambda表达式 总结(一)--lambda表达式
- 领域应用 | 人工智能+知识图谱:如何规整海量金融大数据?
- Mysql配置文件读取顺序
- Javascript 数组循环遍历之forEach
- 计算机网络网络层之互联网控制报文协议(ICMP)
- 【视频】Copula算法原理和R语言股市收益率相依性可视化分析
- Rust : utf8与unicode码
- 骗子丛生的58正失去“神奇”魔法
- 普歌-码上鸿鹄团队-复习系统模块
- 【生信分析】基于TCGA肿瘤数据进行基因共表达网络分析
- 输出菱形图案(数字版)
- 基于增强现实的室内导航系统如何设计架构
- 上半年要写的博客文章21
- vue如何把html转换word,vue导出html、word和pdf的实现代码
- JS中的函数声明和函数表达式
- 序列的算法(一·a)马尔可夫模型
- JMeter——》调整界面比例、字体大小
- 基于STM32开发的CO2浓度、温湿度、气压监测系统