版權聲明:本文為部落客原創文章,轉載注明出處http://blog.csdn.net/u013142781
剛開始接觸搜尋引擎,網上收集了一些資料,在這裡整理了一下分享給大家。
搜尋引擎(search engine)是指根據一定的政策、運用特定的計算機程式從網際網路上搜集資訊,在對資訊進行組織和處理後,為使用者提供檢索服務,将使用者檢索相關的資訊展示給使用者的系統。搜尋引擎包括全文索引、目錄索引、元搜尋引擎、垂直搜尋引擎、集合式搜尋引擎、門戶搜尋引擎與免費連結清單等。
一個搜尋引擎由搜尋器 、索引器 、檢索器 和使用者接口 四個部分組成。搜尋器的功能是在網際網路 中漫遊,發現和搜集資訊。索引器的功能是了解搜尋器所搜尋的資訊,從中抽取出索引項,用于表示文檔 以及生成文檔庫的索引表。檢索器的功能是根據使用者的查詢在索引庫中快速檢出文檔,進行文檔與查詢的相關度評價,對将要輸出的結果進行排序,并實作某種使用者相關性回報機制。使用者接口的作用是輸入使用者查詢、顯示查詢結果、提供使用者相關性回報機制。
solr和elasticsearch都是基于lucene實作的,是以這裡有必要對lucene進行介紹。
lucene是一個全文檢索引擎的架構。那什麼是全文搜尋引擎?
從搜尋結果來源的角度,全文搜尋引擎又可細分為兩種,一種是擁有自己的檢索程式(indexer),俗稱“蜘蛛”(spider)程式或“機器人”(robot)程式,并自建網頁資料庫,搜尋結果直接從自身的資料庫中調用,如上面提到的7家引擎;另一種則是租用其他引擎的資料庫,并按自定的格式排列搜尋結果,如lycos引擎。
solr是一個基于lucene的java搜尋引擎伺服器。solr 提供了層面搜尋、命中醒目顯示并且支援多種輸出格式(包括 xml/xslt 和 json 格式)。它易于安裝和配置,而且附帶了一個基于 http 的管理界面。solr已經在衆多大型的網站中使用,較為成熟和穩定。solr 包裝并擴充了 lucene,是以solr的基本上沿用了lucene的相關術語。更重要的是,solr 建立的索引與 lucene 搜尋引擎庫完全相容。通過對solr 進行适當的配置,某些情況下可能需要進行編碼,solr 可以閱讀和使用建構到其他 lucene 應用程式中的索引。此外,很多 lucene 工具(如nutch、 luke)也可以使用solr 建立的索引。
書籍推薦一本不錯的書籍:《lucene in action》有中文版的
elasticsearch是一個基于apache lucene(tm)的開源搜尋引擎。無論在開源還是專有領域,lucene可以被認為是迄今為止最先進、性能最好的、功能最全的搜尋引擎庫。
但是,lucene隻是一個庫。想要使用它,你必須使用java來作為開發語言并将其直接內建到你的應用中,更糟糕的是,lucene非常複雜,你需要深入了解檢索的相關知識來了解它是如何工作的。
elasticsearch也使用java開發并使用lucene作為其核心來實作所有索引和搜尋的功能,但是它的目的是通過簡單的restful api來隐藏lucene的複雜性,進而讓全文搜尋變得簡單。
因為部落客後面主要了解學習elasticsearch,是以對elasticsearch有更多的學習資料推薦。
兩篇網頁版教程,十分全面:
<a href="http://udn.yyuap.com/doc/mastering-elasticsearch/chapter-5/54_readme.html">http://udn.yyuap.com/doc/mastering-elasticsearch/chapter-5/54_readme.html</a>
安裝插件:
<a href="http://blog.csdn.net/wenqisun/article/details/47952199">http://blog.csdn.net/wenqisun/article/details/47952199</a>
一篇非常不錯的文章(必看):
<a href="http://www.aboutyun.com/thread-17078-1-1.html">http://www.aboutyun.com/thread-17078-1-1.html</a>
elasticsearch 叢集搭建(建議選擇比較低版本搭建):
<a href="http://my.oschina.net/xiaohui249/blog/228748">http://my.oschina.net/xiaohui249/blog/228748</a>
五類elasticsearch擴充性插件推薦:
<a href="http://cloud.51cto.com/art/201505/476450.htm">http://cloud.51cto.com/art/201505/476450.htm</a>
elasticsearch 與 solr 的比較總結
二者安裝都很簡單;
solr 利用 zookeeper 進行分布式管理,而 elasticsearch 自身帶有分布式協調管理功能;
solr 支援更多格式的資料,而 elasticsearch 僅支援json檔案格式;
solr 官方提供的功能更多,而 elasticsearch 本身更注重于核心功能,進階功能多有第三方插件提供;
solr 在傳統的搜尋應用中表現好于 elasticsearch,但在處理實時搜尋應用時效率明顯低于 elasticsearch。
solr 是傳統搜尋應用的有力解決方案,但 elasticsearch 更适用于新興的實時搜尋應用。
兩者對比更詳細介紹請看如下文章:
<a href="http://www.cnblogs.com/chowmin/articles/4629220.html">http://www.cnblogs.com/chowmin/articles/4629220.html</a>