开源搜索框架笔记

首推的当然时lucene了,先介绍这个吧

lucene : 是一个文件搜索工具包,包括了完整的查询引擎和索引引擎及部分的分析引擎。为apache下的开源子项目。

特点:

1.索引文件独立于操作系统,自己定义了一套8字节为基础的索引文件格式

2.在传统倒排索引的基础上,实现了分块索引,对于新增的文件建立小索引,并能提供索引合并以提升效率。

3.强大的查询引擎。

4.设计了独立于语言和文件格式的文件分析接口,通过接收 token流解析文件,方便扩展。

 

倒排序算法:

传统的记录方式是 文件 --- > 关键词 的索引方式。

倒排序   关键词 --- > 文件  的索引方式

 

lucene 还增加了两个位置:

字符位置:在文章中出现的位置

关键词位置:是文章中的第几个关键词 

针对这两种情况出现了:出现频率和出现位置。详细如下

关键词 文章号 出现频率 出现位置 。lucene的索引文件就是如下所示。

haha   1[2],2[1]      2,6,8    

 

haha 这个关键词在文件1中出现两次,在文章2中出现1次。在文章1中出现的位置是2,6 。在文章2中出现的位置8。 

 

以上就分出了三个文件 : 辞典文件(存放关键词,同时保存了指向频率文件和位置文件的指针,取得具体出现的频率和位置) 频率文件 位置文件 

具体采用的算法是:二元搜索算法。

 

field : 这个概念来描述存放位置,例如标题中还是URL,还是内容中。该信息也记录在辞典文件中,一个关键词必定属于一个或是多个field.

 

 

solr:这个是基于lucene开发的一个企业级搜索应用服务器。提供web-service,restful-api ,普通http-get请求的。简化了lucene的API,是一个完整的搜索引擎框架。

 

nutch:一个开源的基于lucene 开发的搜索引擎,包含了所有的搜索引擎的功能。

安装分为三个层次:基于本地文件系统,基于局域网,基于internet,用户根据自己需求来选择不同的层次。

 

架构上分为两个部分:数据的抓取和索引的创建。有一套非常良好的数据抓取工具包。

nutch和lucene选择区别,可以简单的话,nutch除了封装了lucene的索引部分外,还提供了一套数据抓取的工作,所以若是你的数据源来源于你自己,那么完全采用lucene即可,若是你的数据源依赖于外部网络。那么采用nutch是一个很好的选择。

 

compass:也是一个java开源框架。包含了所有搜索引擎的基本功能,但是提供了很多特性,例如强大的O/R mapping。搜索部分也是基于lucene

可以容易同hibernate集成,并将数据进行索引。

 

同时支持一些分布式框架的集成,例如:terracotta 

 

总结:

lucene:基本的搜索和索引工具。

compass:简化API,轻松的将java对象映射到搜索引擎中。

SOLR:简化API,暴露一个http服务来进行搜索和索引。

nutch:简化API,同时提供丰富的数据抓取工具。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章