13 款開源的全文搜索引擎

jopen 11年前發布 | 520K 次閱讀 全文搜索

本文轉載自xum2008的博客,主要介紹13款現有的開源搜索引擎,你可以將它們用在你的項目中以實現檢索功能。

1.  Lucene

Lucene的開發語言是Java,也是Java家族中最為出名的一個開源搜索引擎,在Java世界中已經是標準的全文檢索程序,它提供了完整的查詢引擎和索引引擎,沒有中文分詞引擎,需要自己去實現,因此用Lucene去做一個搜素引擎需要自己去架構.另外它不支持實時搜索,但linkedin和推ter有分別對Lucene改進的實時搜素. 其中Lucene有一個C++移植版本叫CLucene,CLucene因為使用C++編寫,所以理論上要比lucene快.

官方主頁:http://lucene.apache.org/

CLucene官方主頁:http://sourceforge.net/projects/clucene/

2.  Sphinx

Sphinx是一個用C++語言寫的開源搜索引擎,也是現在比較主流的搜索引擎之一,在建立索引的事件方面比Lucene快50%,但是索引文件比Lucene要大一倍,因此Sphinx在索引的建立方面是空間換取事件的策略,在檢索速度上,和lucene相差不大,但檢索精準度方面Lucene要優于Sphinx,另外在加入中文分詞引擎難度方面,Lucene要優于Sphinx.其中Sphinx支持實時搜索,使用起來比較簡單方便.

官方主頁:http://sphinxsearch.com/about/sphinx/

3.  Xapian

Xapian是一個用C++編寫的全文檢索程序,它的api和檢索原理和lucene在很多方面都很相似,算是填補了lucene在C++中的一個空缺.

官方主頁:http://xapian.org/

4.  Nutch

Nutch是一個用java實現的開源的web搜索引擎,包括爬蟲crawler,索引引擎,查詢引擎. 其中Nutch是基于Lucene的,Lucene為Nutch提供了文本索引和搜索的API.

對于應該使用Lucene還是使用Nutch,應該是如果你不需要抓取數據的話,應該使用Lucene,最常見的應用是:你有數據源,需要為這些數據提供一個搜索頁面,在這種情況下,最好的方式是直接從數據庫中取出數據,并用Lucene API建立索引.

官方主頁:http://nutch.apache.org/

5.  DataparkSearch

DataparkSearch是一個用C語言實現的開源的搜索引擎. 其中網頁排序是采用神經網絡模型.  其中支持HTTP,HTTPS,FTP,NNTP等下載網頁.包括索引引擎,檢索引擎和中文分詞引擎(這個也是唯一的一個開源的搜索引擎里有中文分詞引擎).能個性化定制搜索結果,擁有完整的日志記錄.

官方主頁:http://www.dataparksearch.org/

6.  Zettair

Zettair是根據Justin Zobel的研究成果為基礎的全文檢索實驗系統.它是用C語言實現的. 其中Justin Zobel在全文檢索領域很有名氣,是業界第一個系統提出倒排序索引差分壓縮算法的人,倒排列表的壓縮大大提高了檢索和加載的性能,同時空間膨脹率也縮小到相當優秀的水平. 由于Zettair是源于學術界,代碼是由RMIT University的搜索引擎組織寫的,因此它的代碼簡潔精煉,算法高效,是學習倒排索引經典算法的非常好的實例. 其中支持linux,windows,mac os等系統.

官方主頁:http://www.seg.rmit.edu.au/zettair/about.html

7.  Indri

Indri是一個用C語言和C++語言寫的全文檢索引擎系統,是由University of Massachusetts和Carnegie Mellon University合作推出的一個開源項目. 特點是跨平臺,API接口支持Java,PHP,C++.

官方主頁:http://www.lemurproject.org/indri/

8.  Terrier

Terrier是由School of Computing Science,Universityof Glasgow用java開發的一個全文檢索系統.

官方主頁:http://terrier.org/

9.  Galago

Galago是一個用java語言寫的關于文本搜索的工具集. 其中包括索引引擎和查詢引擎,還包括一個叫TupleFlow的分布式計算框架(和google的MapReduce很像).這個檢索系統支持很多Indri查詢語言.

官方主頁:http://www.galagosearch.org/

10.  Zebra

Zebra是一個用C語言實現的檢索程序,特點是對大數據的支持,支持EMAIL,XML,MARC等格式的數據.

官方主頁:https://www.indexdata.com/zebra

11.  Solr

Solr是一個用java開發的獨立的企業級搜索應用服務器,它提供了類似于Web-service的API接口,它是基于Lucene的全文檢索服務器,也算是Lucene的一個變種,很多一線互聯網公司都在使用Solr,也算是一種成熟的解決方案.

官方主頁:http://lucene.apache.org/solr/

12.  Elasticsearch

Elasticsearch是一個采用java語言開發的,基于Lucene構造的開源,分布式的搜索引擎. 設計用于云計算中,能夠達到實時搜索,穩定可靠. Elasticsearch的數據模型是JSON.

官方主頁:http://www.elasticsearch.org/

13.  Whoosh

Whoosh是一個用純python寫的開源搜索引擎.

官方主頁:https://bitbucket.org/mchaput/whoosh/wiki/Home

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!