想学习下新知识,先从lucene开始。
首先了解lucene是什么:Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。通常使用此技术就是想实现优于数据库的大成本搜索。全文检索 ≠ like "%keyword%"通常比较厚的书籍后面常常附关键词索引表(比如:北京:12, 34页, 上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。对于检索系统来说核心是一个排序问题。
由于数据库索引不是为全文索引设计的,因此,使用like "%keyword%"时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危害是极大的。如果是需要对多个关键词进行模糊匹配:like"%keyword1%" and like "%keyword2%" ...其效率也就可想而知了。
所以建立一个高效检索系统的关键是建立一个类似于科技索引一样的反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词列表,用于存储关键词==>文章映射关系,利用这样的映射关系索引:[关键词==>出现关键词的文章编号,出现次数(甚至包括位置:起始偏移量,结束偏移量),出现频率],检索过程就是把模糊查询变成多个可以利用索引的精确查询的逻辑组合的过程。从而大大提高了多关键词查询的效率,所以,全文检索问题归结到最后是一个排序问题。
由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问题,这也是大部分数据库对全文检索支持有限的原因。Lucene最核心的特征是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了扩展接口,以方便针对不同应用的定制。
其中对于lucene对比数据库中,在模糊查询时:匹配度 lucene有匹配度算法,将匹配程度(相似度)比较高的结果排在前面。 而数据没有匹配程度的控制:比如有记录中net出现5词和出现1次的,结果是一样的。 (关于区别和详细介绍http://www.chedong.com/tech/lucene.html,还有关于中文字分词等Google wordsegment search)。
分享到:
相关推荐
Maven项目构建: SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap 源码详细地址:...
springmvc+mybatis+lucene4文档搜索系统(支持分页)
SSM框架构建积分系统和基本商品检索系统(Spring+SpringMVC+MyBatis+Lucene+Redis+MAVEN)
使用Jsoup 抓取网页, Lucene 做检索。 配置文件从别的项目拷过来的。。所以, 你懂得。 压缩包里有war 和 src 环境配置: jdk1.8, tomcat 8
springMVC集成lucene完整代码
SSM框架学习宝典:入门、进阶、精通,全方位代码项目资 一、探索SSM的无限可能 SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您...
spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 Compass将lucene、Spring、Hibernate三者结合
分布式、高并发、低耦合、服务化大型...Maven项目构建: SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap
J2EE项目系列(四)–SSM框架集成积分系统和基本商品检索系统(Spring + SpringMVC + MyBatis + Lucene + Redis + MAVEN) 喜欢就给个star吧!!!谢谢! 并附各级的博客文章: (一) (二) (三) (四) (五)...
毕业设计:支持全文检索的教学资源共享平台(SpringBoot+Spring+SpringMVC+Mybatis+Lucene+Thymeleaf) 教学资源平台能够实现学生不受时空约束,通过互联网实现随时随地获取资源学习。在平台中使用Lucene,实现各种...
使用 SSM(Spring、SpringMVC、MyBatis)框架,MVC 三层结构、Lucene全文检索引擎、Junit 4单元测试、logback日志框架、Druid数据库连接池、Shiro安全框架的一个博文系统;
毕业设计:支持全文检索的教学资源共享平台(SpringBoot+Spring+SpringMVC+Mybatis+Lucene+Thymeleaf) 教学资源平台能够实现学生不受时空约束,通过互联网实现随时随地获取资源学习。在平台中使用Lucene,实现各种...
基于Springmvc + MyBatis + Spring + Bootstrap + ...实现Lucene对全站的检索功能,对检索出的博客标题和内容实现高亮显示; 使用百度的Ueditor编辑器实现写博客功能,支持单图,多图上传,支持截图上传,支持代码高亮
通过maven构建,使用git版本控制和团队合作,采用springmvc+mybatis框架,集成Lucene全文检索,openoffice转化office文档,ffmpeg处理视频文件,red5搭建流媒体服务,基于pageRank、TF-IDF算法提取处理知识点,...
架构Maven+Springmvc+MyBatis+Spring+Bootstrap+EasyUI+Mysql+Lucene 前端效果预览: 开发工具:Eclipse jdk版本:1.8 Apache Tomcat/8.5.12 数据库:mysql maven构建项目。springmvc+spring+mybatis(ssm)架构。...
2、SpringMVC 3.2 3、Apache Shiro 1.2 4、Hibernate 4.1 5、Hibernate Validation 5.0 6、Hibernate Search 4.2 (Apache Lucene 3.6) 7、SiteMesh 2.4 8、JQuery 1.9 9、Twitter Bootstrap 2.3.1 10、.....
J2EE项目–SSM框架构建积分系统和基本商品检索系统(Spring+SpringMVC+MyBatis+Lucene+Redis+MAVEN) 一、请使用IDEA工具导入,open。 二、导入数据库文件。 (第一篇博客是ssm+redis.sql--未完善版本,第二篇博客...
学习用非常不错,可以抓取网易头条,加入Lucene的检索。直接导入eclipse+Tomcat就可以使用。
基于Springmvc + MyBatis + Spring + Bootstrap + ...实现Lucene对全站的检索功能,对检索出的博客标题和内容实现高亮显示; 使用百度的Ueditor编辑器实现写博客功能,支持单图,多图上传,支持截图上传,支持代码高亮
一个由angularjs+bootstrap+springMVC+mybatis搭建的免费开源的API接口管理系统、BUG管理系统、文档管理系统(应用接口管理系统) [CrapApi收费吗?] CrapApi是完全免费开源项目,源码在GitHub、码云上可以获取,...