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相关推荐

  1. Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动、停止、重新启动...

    Atitit.   软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动.停止.重新启动 能够通过"netstat  ...

  2. 13 【操作mysql数据库】

    13 [操作mysql数据库] 1.mysql 介绍 付费的商用数据库: Oracle,典型的高富帅: SQL Server,微软自家产品,Windows定制专款: DB2,IBM的产品,听起来挺高端 ...

  3. PC软件开发技术之三:C#操作SQLite数据库

    我们在开发应用是经常会需要用到一些数据的存储,存储的方式有多种,使用数据库是一种比较受大家欢迎的方式.但是对于一些小型的应用,如一些移动APP,通常的数据库过于庞大,而轻便的SQLite则能解决这一问 ...

  4. Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道

    Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...

  5. Atitit.软件兼容性原理与实践 v3 q326.docx

    Atitit.软件兼容性原理与实践 v3 q326.docx 1. 架构兼容性1 2. Api兼容性1 2.1. 新api  vs  修改旧的api1 3. Web方面的兼容性(js,html)1 3 ...

  6. 穆穆推荐-软件销售行业软件公司销售参考操作手册-之5-软件行业客户分类及销售人员激励

    穆穆推荐-软件销售行业软件公司销售参考操作手册-之5-软件行业客户分类及销售人员激励 软件行业客户分类及销售人员激励 一.      软件行业客户分类及销售人员激励 客户分级是非常有必要的,如果一个销 ...

  7. 利用PDF编辑软件给PDF添加页码的操作全过程

    还记得小时候,在微机电脑课时.老师在教给大家一项操作的时候,老师肯定会详细的,一步一步的将操作全过程展示给大家.老师们如此严谨其,目的也就是为了防止学生们再操作中因为细小的问题,而导致全盘皆错.一步一 ...

  8. iapp退出软件按钮代码_昆仑通态软件应用(23):酒店触摸屏点菜系统的设计(案例)...

    点击上方蓝字关注我哦! 01•实训目的 •1. 学习使用MCGS嵌入版组态软件设计实现对酒店触摸屏点菜系统的控制. •2. 用TP717BMCGS触摸屏来控制西门子S7-200的PLC进行工作. •3 ...

  9. 六、libinput功能介绍(二、触摸板软件按钮及模拟鼠标中键)

    这里的触摸板指的是没有独立物理按钮的触摸板,而是把整个触摸板作为一个独立的"按钮".左键和右键行为通过手指点击的区域来区分,或者通过同时按压触摸板手指的数量来区分.原文中的&quo ...

  10. 点击按钮取GridView当前被操作行的数据

    在GridView里加一个模版列,里面放一些按钮,然后呢,点击这些按钮的时候,要可以取到GridView当前被点击的行的字段里的内容 一般有两种情况,只需要取一个字段的值,和要取多个字段的值,其实都是 ...

最新文章

  1. Ubuntu16.04里django的配置和安装
  2. how is batch operation handled in backend
  3. JAVA 8 StreamAPI 和 lambda表达式 总结(一)--lambda表达式
  4. 领域应用 | 人工智能+知识图谱:如何规整海量金融大数据?
  5. Mysql配置文件读取顺序
  6. Javascript 数组循环遍历之forEach
  7. 计算机网络网络层之互联网控制报文协议(ICMP)
  8. 【视频】Copula算法原理和R语言股市收益率相依性可视化分析
  9. Rust : utf8与unicode码
  10. 骗子丛生的58正失去“神奇”魔法
  11. 普歌-码上鸿鹄团队-复习系统模块
  12. 【生信分析】基于TCGA肿瘤数据进行基因共表达网络分析
  13. 输出菱形图案(数字版)
  14. 基于增强现实的室内导航系统如何设计架构
  15. 上半年要写的博客文章21
  16. vue如何把html转换word,vue导出html、word和pdf的实现代码
  17. JS中的函数声明和函数表达式
  18. 序列的算法(一·a)马尔可夫模型
  19. JMeter——》调整界面比例、字体大小
  20. 基于STM32开发的CO2浓度、温湿度、气压监测系统

热门文章

  1. 区分音视频文件的容器格式和编码格式
  2. Powershell进阶学习(1) 浅谈Powershell学习方法
  3. 5个界面效果很炫的JavaScript UI 框架
  4. doctest使用注意点 -- 省略号的使用
  5. 针对笔记本电源已接通未充电的提示怎么办
  6. VB中对AutoCAD对象图形文件操作
  7. SSIS包生成注意事项
  8. 专家看台:阿里软件研发总监叶伟:如何处理技术和需求的矛盾
  9. SQL Server里面如何导出包含数据的SQL脚本
  10. Maven-maven安装、Eclipse配置maven