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的配置和运行情况。
|