没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
Lucene in Action(简体中文版)
共 部分
第一部分 核心
接触
索引
为程序添加搜索
分析
高极搜索技术
扩展搜索
第二部分 应用
分析常用文档格式
工具和扩充
其它版本
案例学习
[序章]
开始是做为私有项目。在 年末,因为工作不稳定,我寻找自己的一些东西来卖。 是比较热门的编程语言,
我需要一个理由来学习它。我已经了解如何来编写搜索软件,所以我想我可以通过用 写搜索软件来维持生计。所以我写了
。
几年以后,在 年,我意识到我没有销售天赋。我对谈判许可和合同没有任何兴趣,并且我也不想雇人开一家公司。我
喜欢做软件,而不是出售它。所以我把 放在 上,看看是不是开源能让我继续我想做的。
有些人马上开始使用 。大约一年后,在 年, 提出要采纳 。 邮件列表中的消息每天都
稳定地增长。也有人开始贡献代码,大多是围绕 的边缘补充:我依然是仅有的理解它的核心的开发者。尽管如些 ,
开始成为真正的合作项目。
现在, 年, 有一群积极的深刻理解其核心的开发者。我早已不再每天作开发,这个强有力的工作组在进行实质
性的增加与改进。
这些年来, 已经翻译成很多其它的语言包括 、 、!" 和 !#$。在最开始的 和其它这些语言中,
的应用比我预想的要广泛地多。它为不同的应用%如财富 公司讨论组、商业 & 跟踪、'()*$ 提供的邮件搜索和
页面范围的 +, 搜索引擎-提供搜索动力。在业内,我被介绍为“ 人”。很多人告诉我他们在项目中使用到 。
我依然认为我只听说了使用 的程序的小部分。
如果我当初只是出售它, 应用得不会这么广泛。程序开发人员看来更喜欢开源。他们在有问题时不用联系技术支持
而只需查看一下源代码。如果这还不够,邮件列表中的免费支持比大多商业支持要好得多。类似 的开源项目使得程序开
发人员更加有效率。
通过开源已经变得比我想象的伟大的多。我见证了它的发展,是 社区的努力才使得它如此兴旺。
的未来怎样?我无法回答。有了这本书,你现在也是 社区的一员,现在由您将 带往新的高地。旅
途顺利.
/012133452
和 5$ 的作者
前言
来自 6(78$
在 4$$ 早期我就对搜索和索引感兴趣。我已经建立了用 9:;9、'18%'("1)<)""-和少量 !"、=7 及
)"" 脚本来管理邮件列表的存储结构。我实现了一个 24 的 =, 接口,允许用户搜索这个列表和其它用户的信息,其内部使用
了 。然后相继出现了 >.、"$?()$ 和 6@($,这些我都经常访问。
在我有了第一个儿子 7, 之后,我开始了数字照片档案的设计。我想开发一套管理图片的系统,可以给图片附加元数据,
如关键字、拍摄日期。当然用我选择的尺寸定位图片是很容易的。在 世纪 年代末,我构建了基于文件系统的原型,使用了
'()*$ 的技术,包括 '()*$4;@、$(!) 及处理图片的第三方 0' 组件。从那时起,我的职
业生涯都消耗在这些类似的技术上了。4=),"$,,"$$9""("($(("*;#)*
)A$(97(
我的职业转向 技术,并且我越来越少地利用 '()*$+(;=)。为了以系统无关的方式用 技术重新实现我的个
人照片档案系统及搜索引擎,我使用了 。 的简单易用远远超过了我的期望—我所期望的其它开源库或工具在概念
上简单,但是却难以使用。
在 年,$ 和我开始编写 /"9$=($$%'(-。我们采用图片搜索引擎的思想,
并把它推广为一个文档搜索引擎。这个程序示例在那本 $ 书中使用,而且可被定制为图片搜索引擎。$ 的责任不仅来自于简
单的编译打包的构建过程,也来自于定制的任务,,我们在构建过程中使用 创建索引文件。$ 任务现在生存在
的 ;,@%沙箱-中,将在本书 节描述。
$ 已经应用在我的博客系统中,我称为 &"%$$BCC===,")C(7-。在建立一个博客实体之后,我运
行一个 $ 构建过程,索引新的实体并将它们上传到我的服务器上。我的博客服务器由一个 "$、一些验证模板和一个
索引组成,允许%(-查询,甚至联合查询。与其它博客系统相比,&" 在特色和技巧上差很多,但是它的全文
检索能力非常强大。
我现在效力于维吉尼亚大学对 !$($(()9 的应用研究小组%$$BCC===$($(()9-。我用对文本分析、索引和
搜索的经验通过讨论量子力学与艺术的关系来测试及拓展我的思路。“诗人是世界上不被认可的最伟大的工程师”。
来自 Otis Gospodnetic
我对信息搜索与管理的兴趣和热情开始于在 '(;;",# 大学的学生时代。那时候,我发现了信息的广大资源,即 +,。尽
管 +, 仍然刚开始发展,但是对收集、分析、索引和搜索的长期需求是很明显的。我开始对建立来自 +, 的信息库感到困惑,
开始编写 +, 爬行器梦想有种方法可以对这些收集的信息进行搜索。我认为在巨大的未知领域中搜索是杀手级软件。有了这种思
想以后,我开始了一系列收集和搜索项目。
在 年,和同学 ')""( 一起创建了 +,!,一个用来收集和找出个人联系信息的开源程序。基本上,这是一
个简单的具有 +, 接口%24-的电话本,那时排在首位的类型。%实际上,它在 世纪 年代末的案例学习中被引用为一个示
例。-大学和政府机构是这个程序的主要用户,现在还有很多在使用它。在 年使用我的 +,!,我继续创建了 !"),
一个当时很流行的白页。尽管技术%与 +,! 类似-很普通,但是 !") 有很重的负担,并且能够与 ++、&(*$ 和
4*) 等大角色相媲美。
在两个关于个人联系信息的项目之后,是该探索新的领域了。我开始了下一个冒险,4*:9,用来在网上时事通讯、杂志
报纸中选择高质量的信息。我拥有的软件由大量的 !" 模块和脚本组成,4*:9 利用一个称作 +,($ 的 +, 爬行器和
一个全文搜索的产品叫作 3@()。在 年 4*:9 提供的服务很像今天的 (;$(")9。
尽管 +,!、!") 和 4*:9 达到了它们的目的并是功能很完善,但它们都有技术的局限性。它们缺少的是一个用反
向索引来支持全文搜索强大的信息搜索库。为了不重复相同的工作,我开始搜寻一个我认为不可能存在的解决方案。在 年
早期,我发现了 ,我正在寻找的缺少的部分,并且我一下子就喜欢上了它。
我在 还在 的时候就加入了这个项目,后来 年 转移到 软件基金会。我对
的热爱是因为这些年来它已经成为我很多思想的核心组件。这些思想中的一个是 (9#,我最近的一个项目。(9# 是
个有许多特点的个性 +, 服务,可以让用户加标签、索引、搜索和共享在网上找到的信息。它主要使用了 ,上千条索引,
由 /$$( 的另一个项目 5$%见第 章-提供动力支持。我对 的积极参与导致我被邀请与 6(78$ 共同
编写 ($(。
4$( 有关于 最全面的信息。接下来的 章包含的信息围绕你使用 创建优秀程序所需的所有
主题。这是它平坦且轻快的协作过程的结果,就像 社区一样。 和 ($( 证明了有类似兴趣的人们可
以完成什么,不管在人生中会碰到什么情况,都会积极地为全球知识的共享做出贡献。
致谢朋友!
首先并且是最重要的,我们感谢我们的妻子 "%6(7-和 '$%0$()-,一直支持这本书的写作。没有她们的支持,这
本书就不可能出版。6(7 感谢他的两个儿子,6$ 和 7,,因为他们的忍耐和理解,6(7 写这本书时没有时间陪他们玩耍。
我们真诚感谢 /$$(。没有 / 的贡献,就不可能有 。没有其他 的贡献者, 就会少很多
特征、更多的 & , 的成长就会花更长的 时间。感谢所有的贡献者,包括 !$") 、3"/#、$$
2#、62"D,、&(2$D、()$2""、'78=7、3(9)、/("5,、;=
0"(、/9($#,(7、E"(3 和 '$$3。同时,我们感谢所有贡献在第 章的案例的人:/(
"9 、 '(" *"" 、 &, $ 、 E)$ E; 、 3 ! 、 F,$ ": 、 F"*
$(,、8"$D 和 (+"")。
G
G
本书简介
($( 为使用最好的 开源搜索引擎的用户提供所有细节、最好的实践、警告、技巧。
本书假设读者熟悉基本的 编程。 本身是个 档案%F-文件并能集成到简单的命令行程序和大型企业级应用
程序中。
Roadmap
我们在本书第 部分覆盖 核心编程接口%!4-使你在将 整合到你的程序中时愿意使用它:
第 章,接触 。我们介绍了一些基本的信息搜索术语和 的主要竞争对手。我们很快地构建了一个你
马上能用或修改以适应需要的简单索引和搜索程序。这个示例程序向你打开了探索 其它能力的大门。
第 章使你熟悉 基本的索引操作。我们描述了索引数值和日期的不同字段类型和各种技术。包括调整索引过
程、优化索引以及如何处理线程安全。
第 章向你介绍基本的搜索,包括 如何根据查询来排列文档的细节。我们讨论基础的查询类型及它们如何通
过用户输入的查询表达式创建。
第 章深入研究 的索引核心,分析过程。分析器创建块及单词、单词流和单词过滤器。我们创建了一些定制
的分析器,)=)()##9(:$(;9$%"(7);@-"9$也分析了非英语语言,典型的分
析汉字文本的示例。
第 章讲述搜索章节剩余的。我们描述了一些高级的搜索特征,包括排序、过滤及使用词向量。高级的查询类型在此
出现,包括 H# 家族。最后,我们讨论了 对查询多索引的内建支持,并行的及远程的。
第 章超越高级搜索,向你展示了如何扩展 的搜索能力。你将学到如何定制搜索结果的排序、扩展查询表达
式分析、实现 8($ 收集和调整查询性能。
第 部分超越 内建的工具并向你展示围绕 可以做什么。
第 章,我们创建了可重用、可扩展的用来分析 +;、83'、I'、!/ 及其它格式文档的框架。
第 章包括围绕 的扩展和工具。我们描述了一些 的索引查看和开发工具以及 沙箱中的好东
西。高亮搜索项就是这种你想要的沙箱扩展,还有在 $ 构建过程中创建索引的其它工具。使用 分析器,并使用类似
+;5$ 的索引。
第 章描述 翻译成其它各种语言的版本,如 、 、!" 和 !#$。
第 章将 的技术细节带到大量优秀的案例学习中。这些案例由那些创建了以 为核心的有趣的、快
速的、可升级的程序的开发者提供。
谁应该阅读本书?
在程序中需要强大搜索能力的开发人员需要阅读这本书。($( 也适合于那些对 或索引和搜索技术好奇
的开发人员,他们可能不会马上就用到它。把 添加到你的工具箱对以后的项目来说是值得的—搜索是个热门的话题并且
将来也会是。
这本书主要使用 版的 %来自 7$-,并且大多数示例使用 。最适合熟悉 的读者。 经
验是很有帮助的,然而 已经翻译成很多其它的语言包括 、 、!#$ 和 !"。概念、技术甚至 !4 本身都和
版 差不多。
代码示例
本书的源代码可以从 '( 的网站 $$BCC===9(9C$ 上下载。代码的使用说明包含在代码包的
F6/'6 文件。
书中出现的大多数代码是由我们编写并包含在代码包中。某些代码%尤其是案例代码-不在我们的代码包中提供。书中的代码
片断归贡献者所有。同时,我们包含了 代码库的部分代码,基于 软件许可协议%$$BCC===C
"())C4656A-。
代码示例不包括 7和 (9$语句,以节省空间;具体请参照实际代码。
为什么是 JUnit?
我们相信书中的代码示例应该都是高质量的。典型的“""=";J例子经常帮助读者测试他们的环境。
我们使用独特的方法来使用书中的代码示例。大部分示例是实际的 1($ 测试用例%$$BCC===:($-。1($,是
单元测试框架,可以断言一个特殊情况是否能以可重复的方式出现。通过 4/6 或 $ 进行自动 1($ 测试用例可以一步一步地构
筑系统。我们在本书用使用 1($ 是因为平时都在其它项目中使用,并想让你看看我们如何编码。测试驱动开发 %3)$/(
/"9$K3//-是我们强烈推荐的开发模式。
如果你对 1($ 不熟,请阅读以下基础 。我们也 建议 你阅读 /39) 和 ;#8$ 编著的《!9$(1($
3)$((=($1($》,还有 ?($'))" 和 3;8)$; 编著的《1($($(》。
JUnit 基础
剩余41页未读,继续阅读
manorn
- 粉丝: 2
- 资源: 89
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0