想学习下新知识,先从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 源码详细地址:...
确保正确配置了JDK和Tomcat的环境变量,并在Tomcat的webapps目录下部署`SpringMVC+Lucene.war`文件。 **5. 源码分析** `src.zip`包含项目的源代码,包括控制器、服务、模型、视图等组件。主要关注以下几个部分: - ...
J2EE项目系列(四)-SSM框架构建积分系统和基本商品检索系统(Spring+SpringMVC+MyBatis+Lucene+Redis+MAVEN)喜欢就给个star吧!!!谢谢!并附一系列的博客文章(一)项目框架整合构建(二)搭建商品数据库和...
**SpringMVC、MyBatis和Lucene4整合构建的文档搜索系统** 在现代Web开发中,构建一个高效、功能完善的文档搜索系统是至关重要的。本项目基于SpringMVC、MyBatis和Lucene4技术栈,实现了这样一个系统,特别强调了对...
1. **Spring框架**:Spring作为基础容器,负责管理应用对象的生命周期和依赖注入。它通过IoC(Inversion of Control)和AOP(Aspect Oriented Programming)来解耦应用程序的各个部分。在积分系统中,Spring可以用来...
SSM框架学习宝典:入门、进阶、精通,全方位代码项目资 一、探索SSM的无限可能 SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您...
1. **引入依赖**:在项目中添加Lucene的相关依赖,通常通过Maven或Gradle来管理。确保引入的Lucene版本与Spring MVC项目兼容。 2. **创建索引**:定义一个服务类,用于创建和更新Lucene索引。这通常涉及到读取...
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编辑器实现写博客功能,支持单图,多图上传,支持截图上传,支持代码高亮
这个"ssm+lucene+redis"的项目是一个很好的学习和实践案例,它展示了如何在实际项目中结合使用这些技术,提升系统的响应速度和用户体验。通过深入理解并实践这个项目,开发者不仅可以提升SSM框架的使用技巧,还能...
SSM(Spring、SpringMVC、MyBatis)与Lucene是两个在Java开发中非常重要的技术栈。SSM是企业级应用开发的主流框架组合,而Lucene则是流行的全文搜索引擎库。接下来,我们将深入探讨这两个技术的核心概念、集成过程...
通过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)架构。...
Elasticsearch则是一个基于Lucene的搜索服务器,提供实时、分布式、可扩展的搜索和分析功能。在"elasticsearch-2.4.0"这个文件中,包含了Elasticsearch的2.4.0版本,这是当时的一个稳定版本,支持索引、搜索、聚合等...
《构建智能搜索引擎:基于Lucene4.8、IKAnalyzer、SpringMVC4、Jsoup与Quartz的实战解析》 在信息化高度发达的今天,数据的检索与处理能力成为了企业和个人提升效率的关键。本示例项目"Lucene4.8+IKAnalyzer+...