1. 程式人生 > >搜索引擎solr和elasticsearch

搜索引擎solr和elasticsearch

tro server out data 生成文檔 列表 用戶 分析 end

剛開始接觸搜索引擎,網上收集了一些資料。在這裏整理了一下分享給大家。

一、關於搜索引擎

搜索引擎(Search Engine)是指依據一定的策略、運用特定的計算機程序從互聯網上搜集信息。在對信息進行組織和處理後,為用戶提供檢索服務。將用戶檢索相關的信息展示給用戶的系統。

搜索引擎包含全文索引、文件夾索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、門戶搜索引擎與免費鏈接列表等。

一個搜索引擎由搜索器 、索引器 、檢索器 和用戶接口 四個部分組成。搜索器的功能是在互聯網 中漫遊,發現和搜集信息。索引器的功能是理解搜索器所搜索的信息,從中抽取出索引項。用於表示文檔 以及生成文檔庫的索引表。

檢索器的功能是依據用戶的查詢在索引庫中高速檢出文檔,進行文檔與查詢的相關度評價,對將要輸出的結果進行排序。並實現某種用戶相關性反饋機制。用戶接口的作用是輸入用戶查詢、顯示查詢結果、提供用戶相關性反饋機制。

——以上文字百度百科(點擊我跳轉到相應頁面)。很多其它相關搜索引擎介紹請看該文章,如全文搜索引擎、文件夾索引類搜索引擎、元搜索引擎的差別。

二、Lucene

solr和elasticsearch都是基於Lucene實現的。因此這裏有必要對Lucene進行介紹。

Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構。提供了完整的查詢引擎和索引引擎。部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發者提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能。或者是以此為基礎建立起完整的全文檢索引擎。Lucene是一套用於全文檢索和搜尋的開源程式庫,由Apache軟件基金會支持和提供。

Lucene提供了一個簡單卻強大的應用程式接口,能夠做全文索引和搜尋。在Java開發環境裏Lucene是一個成熟的免費開源工具。

就其本身而言,Lucene是當前以及近期幾年最受歡迎的免費Java信息檢索程序庫。人們常常提到信息檢索程序庫,盡管與搜索引擎有關,但不應該將信息檢索程序庫與搜索引擎相混淆。

Lucene是一個全文檢索引擎的架構。那什麽是全文搜索引擎?

全文搜索引擎是名副事實上的搜索引擎,國外具代表性的有Google、Fast/AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut等,國內著名的有百度(Baidu)。它們都是通過從互聯網上提取的各個站點的信息(以網頁文字為主)而建立的數據庫中。檢索與用戶查詢條件匹配的相關記錄。然後按一定的排列順序將結果返回給用戶。因此他們是真正的搜索引擎。

從搜索結果來源的角度,全文搜索引擎又可細分為兩種。一種是擁有自己的檢索程序(Indexer),俗稱“蜘蛛”(Spider)程序或“機器人”(Robot)程序,並自建網頁數據庫,搜索結果直接從自身的數據庫中調用。如上面提到的7家引擎;還有一種則是租用其它引擎的數據庫,並按自定的格式排列搜索結果,如Lycos引擎。

三、solr

Solr是一個基於Lucene的Java搜索引擎server。Solr 提供了層面搜索、命中醒目顯示並且支持多種輸出格式(包含 XML/XSLT 和 JSON 格式)。它易於安裝和配置。並且附帶了一個基於 HTTP 的管理界面。Solr已經在眾多大型的站點中使用。較為成熟和穩定。

Solr 包裝並擴展了 Lucene,所以Solr的基本上沿用了Lucene的相關術語。更重要的是,Solr 創建的索引與 Lucene 搜索引擎庫全然兼容。

通過對Solr 進行適當的配置。某些情況下可能須要進行編碼。Solr 能夠閱讀和使用構建到其它 Lucene 應用程序中的索引。此外。非常多 Lucene 工具(如Nutch、 Luke)也能夠使用Solr 創建的索引。

介紹性文字過多。非常多東西實際操作過就會好理解非常多。這裏推薦一篇不錯的入門文章:Solr開發文檔

書籍推薦一本不錯的書籍:《Lucene In Action》有中文版的

四、elasticsearch

Elasticsearch是一個基於Apache Lucene(TM)的開源搜索引擎。不管在開源還是專有領域。Lucene能夠被覺得是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。

可是,Lucene僅僅是一個庫。

想要使用它,你必須使用Java來作為開發語言並將其直接集成到你的應用中,更糟糕的是,Lucene非常復雜,你須要深入了解檢索的相關知識來理解它是怎樣工作的。

Elasticsearch也使用Java開發並使用Lucene作為其核心來實現全部索引和搜索的功能。可是它的目的是通過簡單的RESTful API來隱藏Lucene的復雜性,從而讓全文搜索變得簡單。

由於博主後面主要了解學習elasticsearch,因此對elasticsearch有很多其它的學習資料推薦。

兩篇網頁版教程,十分全面:
http://es.xiaoleilu.com/010_Intro/10_Installing_ES.html
http://udn.yyuap.com/doc/mastering-elasticsearch/chapter-5/54_README.html

安裝插件:
http://blog.csdn.net/wenqisun/article/details/47952199

一篇非常不錯的文章(必看):
http://www.aboutyun.com/thread-17078-1-1.html

Elastic中文社區:http://elasticsearch.cn/

elasticsearch 集群搭建(建議選擇比較低版本號搭建):
http://my.oschina.net/xiaohui249/blog/228748

五類Elasticsearch擴展性插件推薦:
http://cloud.51cto.com/art/201505/476450.htm

五、solr和elasticsearch比較

Elasticsearch 與 Solr 的比較總結

二者安裝都非常easy。

Solr 利用 Zookeeper 進行分布式管理,而 Elasticsearch 自身帶有分布式協調管理功能;

Solr 支持很多其它格式的數據,而 Elasticsearch 僅支持json文件格式。

Solr 官方提供的功能很多其它,而 Elasticsearch 本身更註重於核心功能,高級功能多有第三方插件提供;

Solr 在傳統的搜索應用中表現好於 Elasticsearch,但在處理實時搜索應用時效率明顯低於 Elasticsearch。

Solr 是傳統搜索應用的有力解決方式,但 Elasticsearch 更適用於新興的實時搜索應用。

兩者對照更具體介紹請看例如以下文章:
http://www.cnblogs.com/chowmin/articles/4629220.html

搜索引擎solr和elasticsearch