本文轉載自xum2008的博客,主要介紹13款現有的開源搜索引擎,你可以將它們用在你的項目中以實現檢索功能。
1. Lucene Lucene的開發語言是Java,也是Java家族中最為出名的一個開源搜索引擎,在Java世界中已經是標準的全文檢索程序,它提供了完整的查詢引擎和索引引擎,沒有中文分詞引擎,需要自己去實現,因此用Lucene去做一個搜素引擎需要自己去架構.另外它不支持實時搜索,但linkedin和twitter有分別對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