没有合适的资源?快使用搜索试试~ 我知道了~
首页探索Java开源搜索引擎Lucene:从入门到实战
探索Java开源搜索引擎Lucene:从入门到实战
需积分: 7 0 下载量 116 浏览量
更新于2024-07-18
收藏 225KB DOC 举报
"《Lucene in Action(简体中文版)》是一本深入讲解Java开源搜索引擎Lucene的实用指南。该教程分为10个部分,全面覆盖Lucene的核心概念和技术。第一部分主要介绍了Lucene的基础,包括接触Lucene、索引构建、搜索功能的集成、文本分析、高级搜索技术和扩展搜索。这部分内容对于初次接触Lucene的开发者来说,是构建搜索引擎基础的基石。 第二部分则转向实际应用,探讨了如何处理各种文档格式的分析、使用工具和扩展Lucene的功能、以及与其他版本的比较。此外,还包含了一个案例学习环节,让读者能够将所学知识应用于实际项目中。 书中提到,Lucene最初的起源是作为个人项目,由作者在寻求职业转型时出于兴趣开发。随着时间的推移,由于作者对商业运营的兴趣不高,他选择将其开源,这一决定促进了Lucene的迅速发展。在开源模式下,Lucene得到了全球开发者社区的热烈响应,不仅在Java领域,还扩展到了其他语言如C++、C#、Perl和Python,被广泛应用到各种场景,如大型企业的讨论组、商业bug跟踪系统、邮件搜索以及大规模的Web搜索引擎。 作者强调,开源的优势在于开发者可以直接访问源代码解决问题,邮件列表上的社区支持也非常活跃,这使得Lucene在程序员中广受欢迎。通过开源,Lucene已经成为了一个强大的工具,它的成功很大程度上归功于整个社区的共同努力。 《Lucene in Action(简体中文版)》不仅提供了丰富的技术指导,还揭示了Lucene从私人项目到开源社区领导者的转变历程,展现了开源软件的力量和潜力,对于希望在搜索引擎领域深入学习和实践的读者来说,这本书是一本不可多得的参考资料。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/10655162/bg7.jpg)
通过以这种风格编写我们的测试用例,可以从我们构建大系统的复杂中解放出来,而且可以每次只关注更少的细节。利用合适
的测试用例,我们能够增强信心和灵活性。信心来自于我们知道代码的变化如优化算法不会破坏系统的其它部分,因为出现这
种情况的话,自动测试组件能让我们在它影响产品之前发现。重构是一种改变代码内部结构的艺术%或者说科学-,所以它能够
适应变化的需求而又不影响系统的对外接口。
在上下文中的 JUnit
让我们看一下到目前为止谈论的 1($ 并把它放到本书的上下文中。1($ 测试用例继承于 :($*9=73)$),且
测试方法都类似 ,"((;$)$III%-形式。我们的测试用例之一%第 章-如下:
,"("))&)((3)$@$;)(3)$)M
,"((;$)$39%-$=)6@$(M
4;@)N=4;@%;($#-O
39$N=39%Q),:$JKQ$J-O
H#L#N=39H#%$-O
8($)($)N))%L#-O
))$6L")%Q/=JKK($)"$%--O
One hit expected for
search for “ant”
$N=39%Q),:$JKQ:($J-O
($)N))%=39H#%$--O
))$6L")%K($)"$%--O
Two hits expected for “junit”
)")%-O
P
P
当然,我们将在之后解释这个测试用例中使用的 !4。现在我们只关注 1($ 的细节。$)$39 方法中的 ;($#
变量没在此类中定义。1($ 提供一个在执行每个测试方法之前的初始化钩子;这个钩子是名为 ,"((;)$1%-的方法。
我们的 (3)$) 基类以这种方式实现 )$1:
,"(,)$$"))(3)$)@$;)3)$)M
($$((;@/(N#)$9$!$#%Q(;@;(J-O
protected Directory directory;
$$;(;)$1%-$=)6@$(M
directory = FSDirectory.getDirectory(indexDir, false);
7
![](https://csdnimg.cn/release/download_crawler_static/10655162/bg8.jpg)
P
P
如果 $)$39 中的第一个断言失败,我们会得到一个异常:
:($*9=7))$(");6BJDwA expected:<1> but was:<0>
$"()(&)((3)$
R$)$39%&)((3)$:B-
这个失败指出我们的测试数据与预期的结果不同。
测试 Lucene
本书中的大部分测试都是测试 本身的。实际上,这是否现实呢?难道要测的不是我们自己写的代码而是库本身?有个
3)$/(/"9$ 的姊妹篇是用来学习 !4 的:3)$/((。它为新 !4 写测试以了解它是如何工作
以及你能从中得到什么时非常有帮助。这正是我们在大部分代码示例中所做的,所以测试都是测试 它本身。但是不要
把这些为学习而做的测试抛开。保留它们以确保你在升级到新版的 !4 或因 !4 改变而重构时,它们能够保持真值。
模型对象
在一些用例中,我们使用模型对象来测试。模型对象用来作为探测器传入真实的业务逻辑,以判断这个业务逻辑是否正常工作
例如,第 章中有个 ##96( 接口( 节)。使用这个接口的真实业务逻辑是个分析器。当我们想测试这个分析
器本身时,##96( 使用什么类型就不重要,我们只想使用一个定义良好并有可预见行为的对象。模型对象可以使
得测试用例尽可能简单,这样它们每次只测试系统的一个方面,在测试失败要修正什么错误时没有纠缠的依赖。使用模型对象
的一个好处来自于设计的变动,例如关系的分离和设计使用接口代替直接具体实现。
我们的测试数据
为了避免每个小节都要用完全不同的数据,书中大部多都是围绕一组公共的示例数据以提供一致性。这些示例数据由书籍详细
资料组成。表 显示了这些数据,你可以参考它来理解我们的例子。
表 本书中用到的示例数据
Title / Author Category Subject
';$*6;$(
F;(*$(
C;$(C;# ;$((")#
)#"#$(+";*
49("$)*8"$
;($#
&,"=)
C"$C"$$(C() ;($()9;((L(
"$,)
33(道德經
$'($""
C(")#C)$ $()9
8
剩余36页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
long_13f
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Vue实现iOS原生Picker组件:详细解析与实现思路
- Arduino蓝牙小车:参数调试与功能控制
- 百度Java面试精华:200页精选资源涵盖核心知识点
- Swift使用CoreData填坑指南:CoreData在Swift 3.0的变化
- 微距离无线充电器创新设计及其实验探索
- MTK Android平台开发全攻略:44步详解流程
- RecyclerView全面解析:替代ListView的新选择
- Android开发:自动适配中英文键盘解决方案
- Android调用WebService接口教程
- Android开发:BitmapUtil图片处理全解析与实例
- Android多线程断点续传实现详解
- PCA算法在人脸识别会议签到系统中的应用
- EventBus 3.0:Android事件总线详解与实战应用
- Android FileUtil:全面解析文件操作实用技巧与实例
- RecyclerView添加头部和尾部实战教程
- Android实现微博滑动固定顶部栏实战与优化
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)