開源搜索框架筆記

首推的當然時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,同時提供豐富的數據抓取工具。

 

 

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