java lucene in action教程

上传人:好** 文档编号:104934062 上传时间:2019-10-10 格式:PDF 页数:39 大小:296.74KB
返回 下载 相关 举报
java lucene in action教程_第1页
第1页 / 共39页
java lucene in action教程_第2页
第2页 / 共39页
java lucene in action教程_第3页
第3页 / 共39页
java lucene in action教程_第4页
第4页 / 共39页
java lucene in action教程_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《java lucene in action教程》由会员分享,可在线阅读,更多相关《java lucene in action教程(39页珍藏版)》请在金锄头文库上搜索。

1、1 Lucene in Action(简体中文版) 共 10 部分 第一部分 Lucene 核心 1.接触 Lucene 2.索引 3.为程序添加搜索 4.分析 5.高极搜索技术 6.扩展搜索 第二部分 Lucene 应用 7.分析常用文档格式 8.工具和扩充 9.Lucene 其它版本 10.案例学习 序章序章 Lucene 开始是做为私有项目。在 1997 年末,因为工作不稳定,我寻找自己的一些东西来卖。Java 是比较热门的编程语言,我 需要一个理由来学习它。我已经了解如何来编写搜索软件,所以我想我可以通过用 Java 写搜索软件来维持生计。所以我写了 Lucene。 几年以后,在 20

2、00 年,我意识到我没有销售天赋。我对谈判许可和合同没有任何兴趣,并且我也不想雇人开一家公司。我喜欢 做软件,而不是出售它。所以我把 Lucene 放在 SourceForge 上,看看是不是开源能让我继续我想做的。 有些人马上开始使用 Lucene。大约一年后,在 2001 年,Apache 提出要采纳 Lucene。Lucene 邮件列表中的消息每天都稳定地增 长。也有人开始贡献代码,大多是围绕 Lucene 的边缘补充:我依然是仅有的理解它的核心的开发者。尽管如些,Lucene 开始 成为真正的合作项目。 现在,2004 年,Lucene 有一群积极的深刻理解其核心的开发者。我早已不再每

3、天作开发,这个强有力的工作组在进行实质性的 增加与改进。 2 这些年来,Lucene 已经翻译成很多其它的语言包括 C+、C#、Perl 和 Python。在最开始的 Java 和其它这些语言中,Lucene 的 应用比我预想的要广泛地多。它为不同的应用(如财富 100 公司讨论组、商业 Bug 跟踪、Microsoft 提供的邮件搜索和 100 页面 范围的 Web 搜索引擎)提供搜索动力。在业内,我被介绍为“Lucene 人”。很多人告诉我他们在项目中使用到 Lucene。我依然 认为我只听说了使用 Lucene 的程序的小部分。 如果我当初只是出售它,Lucene 应用得不会这么广泛。程

4、序开发人员看来更喜欢开源。他们在有问题时不用联系技术支持而只 需查看一下源代码。如果这还不够,邮件列表中的免费支持比大多商业支持要好得多。类似 Lucene 的开源项目使得程序开发人 员更加有效率。 Lucene 通过开源已经变得比我想象的伟大的多。我见证了它的发展,是 Lucene 社区的努力才使得它如此兴旺。 Lucene 的未来怎样?我无法回答。有了这本书,你现在也是 Lucene 社区的一员,现在由您将 Lucene 带往新的高地。旅途顺利! DOUG CUTTING Lucene 和 Nutch 的作者 前言 来自 Erik Hatcher 在 Internet 早期我就对搜索和索引

5、感兴趣。我已经建立了用 majordomo、MUSH(Mail Users Shell)和少量 Perl、awk 及 shell 脚本来管理邮件列表的存储结构。 我实现了一个 CGI 的 web 接口, 允许用户搜索这个列表和其它用户的信息, 其内部使用了 grep。 然后相继出现了 Yahoo!、AltaVista 和 Excite,这些我都经常访问。 在我有了第一个儿子 Jakob 之后,我开始了数字照片档案的设计。我想开发一套管理图片的系统,可以给图片附加元数据,如 关键字、拍摄日期。当然用我选择的尺寸定位图片是很容易的。在 19 世纪 90 年代末,我构建了基于文件系统的原型,使用了

6、Microsoft 的技术,包括 Microsoft Index Server、Action Server Pages 及处理图片的第三方 COM 组件。从那时起,我的职 业生涯都消耗在这些类似的技术上了。I was able to cobble together a compelling application in a couple of days of spare-time hacking. 我的职业转向 Java 技术,并且我越来越少地利用 Microsoft Windows。为了以系统无关的方式用 Java 技术重新实现我的个人 照片档案系统及搜索引擎,我使用了 Lucene。 Lu

7、cene 的简单易用远远超过了我的期望我所期望的其它开源库或工具在概念上 简单,但是却难以使用。 在 2001 年,Steve Loughran 和我开始编写 Java Development with Ant(Manning)。我们采用图片搜索引擎的思想,并把它推 广为一个文档搜索引擎。这个程序示例在那本 Ant 书中使用,而且可被定制为图片搜索引擎。Ant 的责任不仅来自于简单的编 3 译打包的构建过程,也来自于定制的任务,我们在构建过程中使用 Lucene 创建索引文件。Ant 任务现在生存在 Lucene 的 Sandbox(沙箱)中,将在本书 8.4 节描述。 Ant 已经应用在我的

8、博客系统中,我称为 BlogScene(http:/www.blogscene.org/erik)。在建立一个博客实体之后,我运行一 个 Ant 构建过程,索引新的实体并将它们上传到我的服务器上。我的博客服务器由一个 Servlet、一些验证模板和一个 Lucene 索引组成,允许(rich)查询,甚至联合查询。与其它博客系统相比,BlogScene 在特色和技巧上差很多,但是它的全文检索能 力非常强大。 我现在效力于维吉尼亚大学对 Patacriticism 的应用研究小组(http:/www.patacriticism.org)。我用对文本分析、索引和搜 索的经验通过讨论量子力学与艺术的关

9、系来测试及拓展我的思路。“诗人是世界上不被认可的最伟大的工程师”。 来自来自 OtisOtis GospodneticGospodnetic 我对信息搜索与管理的兴趣和热情开始于在 Middlebury 大学的学生时代。 那时候, 我发现了信息的广大资源, 即 Web。 尽管 Web 仍然刚开始发展,但是对收集、分析、索引和搜索的长期需求是很明显的。我开始对建立来自 Web 的信息库感到困惑,开始编 写 Web 爬行器梦想有种方法可以对这些收集的信息进行搜索。我认为在巨大的未知领域中搜索是杀手级软件。有了这种思想以 后,我开始了一系列收集和搜索项目。 在 1995 年,和同学 Marshall

10、 Levin 一起创建了 WebPh,一个用来收集和找出个人联系信息的开源程序。基本上,这是一个简 单的具有 Web 接口(CGI)的电话本,那时排在首位的类型。(实际上,它在 19 世纪 90 年代末的案例学习中被引用为一个示例。) 大学和政府机构是这个程序的主要用户,现在还有很多在使用它。在 1997 年使用我的 WebPh,我继续创建了 Populus,一个当 时很流行的白页。尽管技术(与 WebPh 类似)很普通,但是 Populus 有很重的负担,并且能够与 WhoWhere、Bigfoot 和 Infospace 等大角色相媲美。 在两个关于个人联系信息的项目之后,是该探索新的领域

11、了。我开始了下一个冒险,Infojump,用来在网上时事通讯、杂志、 报纸中选择高质量的信息。我拥有的软件由大量的 Perl 模块和脚本组成,Infojump 利用一个称作 Webinator 的 Web 爬行器和 一个全文搜索的产品叫作 Texis。在 1998 年 Infojump 提供的服务很像今天的 FindA 。 尽管 WebPh、Populus 和 Infojump 达到了它们的目的并是功能很完善,但它们都有技术的局限性。它们缺少的是一个用反向索 引来支持全文搜索强大的信息搜索库。 为了不重复相同的工作, 我开始搜寻一个我认为不可能存在的解决方案。 在 2000 年早期, 我发现了

12、 Lucene,我正在寻找的缺少的部分,并且我一下子就喜欢上了它。 我在 Lucene 还在 SourceForge 的时候就加入了这个项目,后来 2002 年 Lucene 转移到 Apache 软件基金会。我对 Lucene 的热爱 是因为这些年来它已经成为我很多思想的核心组件。这些思想中的一个是 Simpy,我最近的一个项目。Simpy 是个有许多特点的 个性 Web 服务,可以让用户加标签、索引、搜索和共享在网上找到的信息。它主要使用了 Lucene,上千条索引,由 Doug Cutting 的另一个项目 Nutch(见第 10 章)提供动力支持。我对 Lucene 的积极参与导致我被

13、邀请与 Erik Hatcher 共同编写 Lucene in Action。 4 Lucene In Action 有关于 Lucene 最全面的信息。接下来的 10 章包含的信息围绕你使用 Lucene 创建优秀程序所需的所有主题。 这是它平坦且轻快的协作过程的结果,就像 Lucene 社区一样。Lucene 和 Lucene in Action 证明了有类似兴趣的人们可以完成 什么,不管在人生中会碰到什么情况,都会积极地为全球知识的共享做出贡献。 致谢朋友致谢朋友! ! 首先并且是最重要的,我们感谢我们的妻子 Carole(Erik)和 Margaret(Otis),一直支持这本书的写作

14、。没有她们的支持,这本 书就不可能出版。Erik 感谢他的两个儿子,Ethan 和 Jakob,因为他们的忍耐和理解,Erik 写这本书时没有时间陪他们玩耍。 我们真诚感谢 Doug Cutting。没有 Doug 的贡献,就不可能有 Lucene。没有其他 Lucene 的贡献者,Lucene 就会少很多特征、 更多的 Bug,Lucene 的成长就会花更长的时间。感谢所有的贡献者,包括 Peter Carlson、Tal Dayan、Scott Ganyo、Eugene Gluzberg、 Brian Goetz、 Christoph Goller、 Mark Harwook、 Tim J

15、ones、 Daniel Naber、 Andrew C. Oliver、 Dmitry Serebrennikov、 Kelvin Tan 和 Matt Tucher。 同时, 我们感谢所有贡献在第 10 章的案例的人: Dion Almaer、 Michael Cafarella、 Bob Carpenter、 Karsten Konrad、Terence Parr、Robert Selvaraj、Ralf Steinbach、Holger Stenzhorn 和 Craig Walls。 本书简介 Lucene in Action 为使用最好的 Java 开源搜索引擎的用户提供所有细节、

16、最好的实践、警告、技巧。 本书假设读者熟悉基本的 Java 编程。Lucene 本身是个 Java 档案(JAR)文件并能集成到简单的命令行程序和大型企业级应用程 序中。 RoadmapRoadmap 我们在本书第 1 部分覆盖 Lucene 核心编程接口(API)使你在将 Lucene 整合到你的程序中时愿意使用它: n第 1 章,接触 Lucene。我们介绍了一些基本的信息搜索术语和 Lucene 的主要竞争对手。我们很快地构建了 一个你马上能用或修改以适应需要的简单索引和搜索程序。这个示例程序向你打开了探索 Lucene 其它能力的大门。 5 n第 2 章使你熟悉 Lucene 基本的索引操作。我们描述了索引数值和日期的不同字段类型和各种技术。包括调整 索引过程、优化索引以及如何处理线程安全。 n第 3 章向你介绍基本的搜索,包括 Lucene 如何根据查询来排列文档的细节。我们讨论基础的查询类型及它们 如何通过用户输入的查询表达式创建。 n第 4 章深入研究 Lucene 的索引核心,分析过程。分析器创建块及单词、单词流和单词过滤器。我们创建了一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号