一步一步学lucene——(第一步:概念篇)

信息检索的概念

信息检索(Information Retrieval)是指信息按一定的方式组织起来,并根据信息用户的需要找出有关的信息的过程和技术。狭义的信息检索就是信息检索过程的后半部分,即从 信息集合中找出所需要的信息的过程,也就是我们常说的信息查寻(Information Search 或Information Seek)。

我们在下边研究的lucene就是对信息做全文检索的一种手段,或者说是一项比较流行的技术,跟google、baidu等专业的搜索引擎比起来会有一定的差距,但是对于普通的企业级应用已经是足够了。

什么是lucene

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的 查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中 实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

现在最新的稳定版本是3.6,而且4.0alpha版本也已经推出。

lucene能做什么

首先要明确一点,lucene只是一个软件类库,或者一个工具箱,而并不是一个完整的搜索程序。但是它的API非常简单,可以让你不用了解复杂的索引和搜索实现的情况下,通过它提供的API,来完成非常复杂的事务处理。

你可以把站内新闻都索引了,做个资料库;你可以把一个数据库表的若干个字段索引起来,那就不用再担心因为“%like%”而锁表了;你也可以写个自己的搜索引擎……

应用程序和lucene之间的关系

lucene的工作过程是首先建立索引,将索引保存,然后对索引进行搜索,并且根据搜索的结果找到对应的数据的过程。

关系结构如下:


图:应用程序和lucene之间的关系

lucene中的几大组件

一、索引组件

创建索引的过程就是首先“获取内容”,然后根据获取的内容“建立文档”,对文档进行“文档分析”,最后对文档建立“文档索引”的过程。

1、获取内容

获取内容的手段很多,可以从上图的输入渠道中看到,包括数据库、文件系统、网络等多种渠道。

在有些情况下,获取内容的工作很简单,比如索引指定目录下的文件、将数据库中的内容读出并进行索引等。

但是有些情况下,获取内容的工作会很复杂,如操作文件系统、内容管理、各种web站点的数据等。

内容获取完全可以通过下面提供的开源软件进行获取,当然这里只是列出了其中的一部分:

  • solr:Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
  • nutch:Nutch 致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎。
  • grub:Grub Next Generation 是一个分布式的网页爬虫系统,包含客户端和服务器可以用来维护网页的索引。
  • Heritrix:Heritrix是一个开源,可扩展的web爬虫项目。Heritrix设计成严格按照robots.txt文件的排除指示和META robots标签。
  • Aperture:Aperture这个Java框架能够从各种各样的资料系统(如:文件系统、Web站点、IMAP和Outlook邮箱)或存在这些系统中的文件(如:文档、图片)爬取和搜索其中的全文本内容与元数据。
  • jcrawl:jcrawl是一款小巧性能优良的的web爬虫,它可以从网页抓取各种类型的文件,基于用户定义的符号,比如email,qq。

2、建立文档

文档是lucene中建立的小数据块,也就是说,必须先将这些获得的内容转换成文档,文档中几个带值的域主要包括:标题、正文、摘要、作者和链接等。

lucene提供了API来建立域和文档,但不提供任何建立它们的程序逻辑。

有一些应用可以很好的完成这些工作,下面也列出其中一部分,仅供参考:

  • Tika:Tika是一个内容抽取的工具集合(a toolkit for text extracting)。它集成了POI, Pdfbox 并且为文本抽取工作提供了一个统一的界面。其次,Tika也提供了便利的扩展API,用来丰富其对第三方文件格式的支持。
  • DBSight:DBSight是一个J2EE的搜索平台,可扩展的即时全文搜索任何关系型数据库,对初学者和专家。它具有内置的数据库抓取以下用户定义的SQL ,增量索引,配置的结果排名,突出显示的搜索结果(如谷歌) ,计数和分类结果(如亚马逊) 。脚手架支持标签云, AJAX搜索建议,以及拼写检查。它可以轻松地实现与其他语言的使用XML /简称JSON / HTML格式。有一个用户界面的所有业务,因此没有Java的编码是必要的。删除或更新记录的数据库可以同步。内容以外的数据库还可以进行搜查。
  • Hibernate Search:Hibernate Search的作用是对数据库中的数据进行检索的。它是hibernate对著名的全文检索系统Lucene的一个集成方案,作用在于对数据表中某些内容庞大的字段(如声明为text的字段)建立全文索引,这样通过hibernate search就可以对这些字段进行全文检索后获得相应的POJO,从而加快了对内容庞大字段进行模糊搜索的速度(sql语句中like匹配)。
  • Compass:Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架.

3、文档分析

就是分析如何建立索引,怎样规划,lucene中提供了大量内嵌的分析器能让你轻松控制这些操作。

4、文档索引

也就是建立索引的过程,并且通过一个异常简单的API来完成索引操作。

二、搜索组件

搜索处理的过程就是用户根据“用户搜索界面”,“建立查询”,并且根据“搜索查询”,得到“展现结果”的过程。

1、用户搜索界面

我们最熟悉的当然就是baidu和google了。


图:baidu搜索界面

2、建立查询

根据提交过来的搜索请求,将查询的条件组合起来并且交给lucene的查询解析器中,并且对查询的内容进行分析处理的过程。

3、搜索查询

根据查询解析器组合的查询条件,查询检索索引并返回与查询语句匹配的文档的过程。

4、展现结果

一旦获得匹配的文档就将结果展现出来的过程,类似于我们日常用到的搜索后的列表。


图:baidu展现结果页面

三、其它组件

1、管理组件

如爬虫要爬取时的规则的规则、时间等需要在管理界面进行统一的设置,对于搜索日志的管理等。

2、分析组件

对于某些关键詷搜索的频率,次数及搜索的习惯等进行分析的部分。

3、搜索范围

即搜索的范围是本机的,还是在分布式环境下的,还是基于其它系统的,也就是一个范围的划分和界定。

时间: 2024-08-29 14:21:17

一步一步学lucene——(第一步:概念篇)的相关文章

java接口用法学习----------------java菜鸟学飞第一步

/* * @(#)ClsUsage.java 1.0 04/12/25 * * You can modify the template of this file in the * directory ..\JCreator\Templates\Template_1\Project_Name.java * * You can also create your own project template by making a new * folder in the directory ..\JCre

一步一步学List Control控件的用法(第一步)----创建第一列

  第一步:创建一个列 注:开发平台为VS2008.NET.   1.  创建一个MFC应用程序,选择基于对话框的. 具体步骤如下:文件à新建à项目àVisual C++àMFCàMFC应用程序,在下方名称中输入你自己想要建立的项目名,此处为ListCtrl. 在MFC应用程序向导中选择引用程序类型,然后在窗口右边应用程序类型中选择基于对话框,然后选择完成. 2.  进入项目,可以直接看到建立好的一个对话框,将对话框中部的"TODO:在此放置对话框删除". 3.  从工具箱中拖一个Li

立法保护网络信息补齐“短板”第一步

"非常关键."提起日前全国人大常委会表决通过的<关于加强网络信息保护的决定>(以下简称<决定>),中国人民公安大学法律系教授高文英说.尤其是<决定>第十条,令高文英看到给公安部门侦破网络犯罪案件带来的"利好"信息. 第十条中提到:"有关主管部门依法履行职责时,网络服务提供者应当予以配合,提供技术支持."这样一句简短的表述,在高文英看来,是关键中的关键.她举例说,公安部门在破解一些危害国家安全的信息时发现,很多信

专访科大讯飞:成为世界第一,只是阅读理解系统万里长征的第一步

近日,在斯坦福大学发起的SQuAD(Stanford Question Answering)数据集测试榜单中,科大讯飞与哈工大联合实验室(HFL)提交的系统模型夺得第一,这也是中国本土研究机构首次取得该比赛的冠军.在加拿大温哥华举办的ACL大会现场,雷锋网(公众号:雷锋网)对正在参加大会的科大讯飞研究院副院长王士进进行了专访,王士进不仅向雷锋网介绍了讯飞取得良好成绩的关键因素,还对在机器阅读理解领域的未来研发方向及产业化状况做了解答.王士进认为,机器阅读理解具有广阔的应用场景,目前的成绩只是万里

《嵌入式设备驱动开发精解》——2.3 嵌入式开发入门第一步

2.3 嵌入式开发入门第一步 当我们谈论嵌入式开发的时候,最常听到的就是嵌入式开发是如何地难学,比如既需要一定的开发语言基础,又需要相关的数.模.电方面的知识,难道嵌入式真的那么难吗?其实难与不难最关键是一个入门的问题,等真正入了门就会发现先前的努力与汗水都是值得的,你会迈入一个全新的世界.入门嵌入式开发确实有一定的难度,因为它不像学习Java,只要有一台PC,然后按照教科书的例子一个个抄下来,通过一段时间的学习就能编写小的程序了,并且在PC上能立刻看到执行的效果,也可以一步一步地跟踪调试编写的

创业第一步:加入别人的创业公司

如果你的志愿是开一家自己的寿司店,你的第一步通常是先去一家很厉害的寿司店当学徒,等到把醋饭.生鱼.捏寿司.切萝蔔丝.煮味噌汤.观察客人的表情.与客人交谈.记住常客的喜好等等无数种寿司师父必须有的能力练得差不多了,然后再出来开自己的寿司店.如果你的志愿是当一个开业的医生,除了念医科.考医师执照之外,通常还要去医院实习.当住院医生,跟着很厉害的主治医师学习,等到把看诊.问诊.开药.开刀.观察病人的反应.与病人交谈.记住病人的特殊状况等无数种医师必须有的能力练得差不多了,然后再出来开自己的小诊所.事实

庞大汽贸A股上市迈开第一步诸多隐患面临考验

作为今年首家将在A股上市的汽车经销商企业,庞大汽贸集团股份有限公司(下称庞大汽贸)面临诸多考验.不论是上市前媒体对于其财务数据.土地资产的质疑,还是近期有关其销售假冒伪劣产品的纠纷,IPO成功过会只是"长征"的第一步,庞大汽贸面临的现实问题仍需要逐步去解决.瑕疵物业占比大 隐患不可小觑汽车流通业属于资金密集型行业,上市融资成为汽车经销商的重要手段.然而,由于土地问题导致的资产价值不明晰和销售模式落后等问题,汽车经销商的上市历程一直比较艰难.目前,我国只有中升集团和中进汽贸两家流通企业是

网络营销战略部署第一步:起名

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网络营销战略部署第一步:起名 对于网站名称.公司名称,你是否把它列为网络营销中的重要的第一步?甚至于定为其长远发展规划中的重要一环? "未见其人,先闻其名."名,在生活中起到的不仅是一个称呼,更多是其它的意愿所在. "起名指给某一事物,人或动物.事.地 .产品等起一个个性的名字,通常用来区分另一个名称,名称可以识

地方门户建设第一步:确立网站定位储备优势资源

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 对于地方门户网站的建设和维护说起来也有三年的经验了,虽然历程总是走走停停.结局总是无疾而终.不过也确实积累下一些工作经验和发展思路,今天我又回到地方门户网站的漫长征程中,那么就用我的文字来和大家一同体验它的心酸征程.见证它的辉煌历程吧.今天这篇<地方门户建设第一步:确立网站定位,储备优势资源>就作为光辉的起航,来与大家一起发掘地方

Power Cloud Box 轻松迈出云计算第一步

当越来越多的企业开始迈向私有云的时候,他们面临的第一个问题.也可能是最令人头疼的问题,便是如何将既有资源通过虚拟化手段进行更好的"池化".近日,IBM推出的IBM Power Cloud Box方案,经由Power服务器.PowerVM虚拟机.Systems Director Vmcontrol管理平台三者完美融合,即可轻松化解企业用户资源池化难题.让企业轻松迈出云计算第一步. ▲会场外 3月9日,IBM在上海举行了主题为"开天P地,云筹帷幄"2011 IBM Po