A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Lucene
什么是lucene
Lucene是apache下的一个开源的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。可以使用Lucene实现全文检索。
结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件
全文检索=索引+搜索
将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之这种先建立索引,再对索引进行搜索的过程就叫全文检索
为什么数据库搜索很容易?
因为数据库中的数据存储是有规律的,有行有列而且数据格式、数据长度都是固定的。
如何实现全文检索
可以使用Lucene实现全文检索。Lucene是apache下的一个开源的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。
全文检索的应用场景
对于数据量大、数据结构不固定的数据可采用全文检索方式搜索,比如百度等搜索引擎、论坛站内搜索、电商网站站内搜索等。(因为数据库中使用like关键字是全表扫描也就是顺序扫描算法,查询慢)
Lucene实现全文检索的流程
全文检索的流程索引流程搜索流程
索引流程采集数据文档处理存储到索引库中
搜索流程输入查询条件通过lucene的查询器查询索引从索引库中取出结果→视图渲染
Lucene本身不能进行视图渲染
field与Term的对应关系图示分析(analysis),在lucene中指的是将域(Field)转换成最基本的索引表示单元——项(Term)的过程。项的值称为语汇单元(token)。
创建索引是对语汇单元索引,通过词语找文档,这种索引的结构叫倒排索引结构
传统方法是根据文件找到该文件的内容,在文件内容中匹配搜索关键字,这种方法是顺序扫描方法,数据量大、搜索慢。
为什么使用全文检索技术实现搜索功能
使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。
为什么不使用Lucene实现?
虽然Lucene可以实现全文检索,但是单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。
为什么使用Solr?
基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。
什么是solr
Solr 是Apache下的一个开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 管理索引很方便,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。


1 个回复

倒序浏览
想要学习的赶紧收藏吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马