Lucene第一篇:初识Lucene

2018-02-26 14:34:37 +0000

       最近翻阅了自己的为知笔记,准备把以前在学习Lucene中遇到的问题和体会整理出来进行分享。

  1.  Lucene 是什么?
  2.  Lucene 能够做什么?

       Lucene最初是由Doug Cutting开发的,在2001年9月做为高质量的开源Java产品加入到Apache软件基金会的 Jakarta家族中。

       它是一个开放源代码的全文检索Java类库工具包,它提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个“简单”易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的搜索引擎。

       优秀的设计、简单易用的API是Lucene流行的关键因素之一,但是其内部设计先进且复杂的信息检索技术在大多数情况下一直在不为人知。它向用户提供简单易用的索引和搜索API,屏蔽了复杂的内部实现过程,在使用时你不必深入了解信息索引及检索的工作原理。亲身实践不超过百行的代码,便能在你的系统中集成高效的全文检索搜索功能。

       Lucene只能够对文本数据进行索引和搜索,你可以从HTML、Word、Excel、PPT、XML文档、PDF、邮件文本 etc. 中提取文本信息,然后交给Lucene创建索引就可对这些文件进行全文搜索。Lucene作为一款核心的索引和搜索库,并不提供任何功能来实现内容的获取。它不关心数据来源,只要能够转换为文本信息即可。数据信息的获取信息,这里列举部分开源项目仅供参考去理解Lucene。(还有其它很多优秀的开源项目,但不是我分享的内容这里就不展开了。)

  •      Apache Tika 这个工具包可以检测并提取来自上千种不同文件类型(如PPT,XLS和PDF)的元数据和文本。 所有这些文件类型都可以通过单个界面进行分析,这使得Tika对于搜索引擎索引,内容分析,翻译等等非常有用;
  •      Crawler4j 是一个开源的Java Web爬虫,为爬网提供了一个简单易用的接口。 使用它,你可以在几分钟内设置一个多线程的网络爬虫。因为只拥有爬虫的核心功能,所以上手极为简单;
  •      Apache Solr 基于Lucene高性能搜索服务器项目,支持从数据库和XML文档中提取原始数据,并能集成Tika来处理复杂的文档;
  •      Apache Nutch 是一个开源的Java实现的搜索引擎,自带Web爬虫能够抓取Web站点数据,并对数据进行存储、索引和搜索。Nutch是基于Lucene的,Lucene为Nutch提供了文本索引和搜索的API。

     也许第一次接触Lucene和这些超级项目让你无从下手,例如Tika如果你了解其支持文档的格式和对应的解析库时,也许就门清了。Apache pdfbox 和 Apache poi 你应该了解,Tika就是用它来解析和提取PDF和Word\Excel\PPT文件中的文本信息。

       你要有一个概念,Lucene 不是一个完整的搜索引擎(全文检索引擎)。人们经常提到信息检索程序库,虽然与搜索引擎有关,但是不应该将信息检索程序库与搜索引擎相混淆。一个完整的搜索引擎程序至少包括:网页抓取(蜘蛛程序)、文档处理、服务器处理程序、用户管理界面等子系统,而Lucene主要解决的是文档处理中文本信息的索引和搜索核心问题,很多搜索引擎都是围绕Lucene这个核心建立起来。

       虽然Lucene最初是由Java编写的,但是由于被广泛使用目前移植到多个语言版本(C/C++、Ruby、Php、Python、Perl etc.)。

       打开Lucene官方网站:https://lucene.apache.org ,可以看到Lucene 项目包括3个部分。

  •        Lucene Core:提供了基于Java的索引和搜索技术,以及拼写检查,高亮显示和高级分析/标记化功能。通常我们所说的Lucene就是它,大多数情况下它的几个jar包放进你的工程,便可方便的集成全文检索功能。
  •        Solr:是一个使用Lucene Core构建的高性能搜索服务器项目,上面已经介绍过。
  •        PyLucene:是Lucene Core项目的Python版本。

       Lucene的原作者是Doug Cutting,他是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎的主要开发者,后在Excite担任高级系统架构设计师,当前从事于一些Internet底层架构的研究。Lucene最早发布在作者自己的博客上,他贡献出Lucene的目标是为各种中小型应用程式加入全文检索功能。后来发布在SourceForge,2001年年底成为apache软件基金会jakarta的一个子项目。

       同时Doug Cutting也是Hadoop之父

 

本文关键字:Lucene教程,Lucene实例/示例教程,初识Lucene,什么是Lucene,Lucene介绍/是什么/能够做什么,Lucene与solr/nutch/爬虫/搜索引擎的区别