几个概念先行说明一下:
Lucene: 是一个索引与搜索类库,而不是完整的程序。
Solr: 是一个高性能,采用Java5开发,基于Lucene的一个独立的企业级搜索应用服务器,它对外提供类似于Web-service
Nutch: 是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。
Hadoop: 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
于 2005 年秋天作为 Lucene的子项目 Nutch的一部分正式引入。
它受到最先由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发。
2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。
Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
Lucene: 是一个索引与搜索类库,而不是完整的程序。
使用Lucene的方式主要有二种:一是自己编写程序,调用类库;二是使用第三方基于Lucene编写的程序,如下面介绍的Solr等。
更多详情,可查看百度百科的说明: http://baike.baidu.com/view/371811.htm
相关中文文档,可以查看Solr中文网:http://www.solrcn.com/
10_Lucene 原理与代码分析完整版.pdf
11_LuceneInAction(第2版)_Cn.pdf (可作为学习的重点,本人学习笔记请点击这里查看)
12_Lucene+nutch搜索引擎开发.pdf (Part1 Part2)
13_开发自己的搜索引擎——Lucene+Heritrix(第2版) (Part1 Part2)
13_开发自己的搜索引擎——Lucene+Heritrix(第2版)_随书光盘
Hadoop权威指南(第2版).pdf
LuceneInAction(第2版)学习笔记——目录
Lucene索引文件结构速览
可以点击这里下载:http://code.google.com/p/luke/
Apache Solr 是一个开源的搜索服务器,Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。定制 Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述所有 Field 及其内容的 XML 文档就可以了。定制搜索的时候只需要发送 HTTP GET 请求即可,然后对 Solr 返回的信息进行重新布局,以产生利于用户理解的页面内容布局。
21_Lucene_Solr_搜索引擎解密.ppt
22_开源企业搜索引擎Solr的应用教程.doc (快速上手特别推荐,请点击这里下载)
23_Solr技术文档.pdf
24_solr3.1 cookbook.pdf
25_Apache+Solr+3+Enterprise+Search+Server.pdf
26_apache-solr-beyond-the-box.pdf
27_Packtpub.Solr.1.4.Enterprise.Search.Server.Aug.2009.pdf
上述文档打包下载: 请点击这里
Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。
在Solr中,用户通过向部署在servlet 容器中的Solr Web应用程序发送 HTTP 请求来启动索引和搜索。
Solr接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。 默认配置返回Solr的标准 XML 响应,也可以配置Solr的备用响应格式。
可以向Solr索引servlet传递四个不同的索引请求: 1) add/update允许向Solr添加文档或更新文档。直到提交后才能搜索到这些添加和更新。 2) commit 告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。 3) optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。 4) delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。