為解決全站搜索問題。對開源搜索引擎的一個比較。在我的項目中,是ssh+jsp結構。選擇solr是最佳的。
1. Lucene及其變種
Luncene
Lucene的開發語言是Java,也是Java家族中最為出名的一個開源搜索引擎,在Java世界中已經是標准的全文檢索程序,它提供了完整的查詢引擎和索引引擎,沒有中文分詞引擎,需要自己去實現,因此用Lucene去做一個搜素引擎需要自己去架構.另外它不支持實時搜索,但linkedin和twitter有分別對Lucene改進的實時搜素. 其中Lucene有一個C++移植版本叫CLucene,CLucene因為使用C++編寫,所以理論上要比lucene快.
官方主頁:http://lucene.apache.org/
CLucene官方主頁:http://sourceforge.net/projects/clucene/
Solr
Solr是一個用java開發的獨立的企業級搜索應用服務器,它提供了類似於Web-service的API接口,它是基於Lucene的全文檢索服務器,也算是Lucene的一個變種,很多一線互聯網公司都在使用Solr,也算是一種成熟的解決方案.
官方主頁:http://lucene.apache.org/solr/
Elasticsearch
Elasticsearch是一個采用java語言開發的,基於Lucene構造的開源,分布式的搜索引擎. 設計用於雲計算中,能夠達到實時搜索,穩定可靠. Elasticsearch的數據模型是JSON.
官方主頁:http://www.elasticsearch.org/
2.Xapian(C++)
用C++編寫的全文檢索引擎,和Java界的lucene類似。Xapian原生支持C/C++,並且也能夠支持php、python等語言的動態綁定。
Xapian是一個用C++編寫的全文檢索程序,它的api和檢索原理和lucene在很多方面都很相似,算是填補了lucene在C++中的一個空缺.
官方主頁:http://xapian.org/
3.Sphinx
是一個基於SQL的全文檢索引擎。特別為一些腳本語言(PHP,Python,Perl,Ruby)設計搜索API接口。
Sphinx是一個用C++語言寫的開源搜索引擎,也是現在比較主流的搜索引擎之一,在建立索引的事件方面比Lucene快50%,但是索引文件比Lucene要大一倍,因此Sphinx在索引的建立方面是空間換取事件的策略,在檢索速度上,和lucene相差不大,但檢索精准度方面Lucene要優於Sphinx,另外在加入中文分詞引擎難度方面,Lucene要優於Sphinx.其中Sphinx支持實時搜索,使用起來比較簡單方便.
官方主頁:http://sphinxsearch.com/about/sphinx/
4.Nutch
開源Java實現的搜索引擎。包括了全文搜索和web爬蟲。不會扭曲搜索結果(付費前排)。
Nutch是基於Luncene的,Luncene為Nutch提供了文本索引和搜索的API。如果不需要抓取數據的話,應該使用Luncene。
你有數據源,需要為這些數據提供一個搜索頁面。在這種情況下,最好的方式是直接從數據庫中取出數據並用Lucene API 建立索引。
在你沒有本地數據源,或者數據源非常分散的情況下,應該使用Nutch。
Nutch是一個用java實現的開源的web搜索引擎,包括爬蟲crawler,索引引擎,查詢引擎. 其中Nutch是基於Lucene的,Lucene為Nutch提供了文本索引和搜索的API.
對於應該使用Lucene還是使用Nutch,應該是如果你不需要抓取數據的話,應該使用Lucene,最常見的應用是:你有數據源,需要為這些數據提供一個搜索頁面,在這種情況下,最好的方式是直接從數據庫中取出數據,並用Lucene API建立索引.
官方主頁:http://nutch.apache.org/
nutch入門教程:http://wenku.baidu.com/link?url=fcVfcY3B3EC11zJ5pLKgbgmsmF0P166YBT-M32C-imP2e1TPYkufC6HiMNkS_hFaL3koCH0WsczXElBc36wPTTr0BfIkp56ECga14-iPweC
5.Whoosh(python)
唯一的python寫的全文搜索引擎,性能不比sphinx、xapian等,不過他很小,安裝后才2.61M,容易集成,小站可用。
Whoosh是一個用純python寫的開源搜索引擎.
官方主頁:https://bitbucket.org/mchaput/whoosh/wiki/Home
6.Datapark search
Web-based search。主要用於站內搜索,內部搜索或本地系統的搜索。C語言實現。
DataparkSearch是一個用C語言實現的開源的搜索引擎. 其中網頁排序是采用神經網絡模型. 其中支持HTTP,HTTPS,FTP,NNTP等下載網頁.包括索引引擎,檢索引擎和中文分詞引擎(這個也是唯一的一個開源的搜索引擎里有中文分詞引擎).能個性化定制搜索結果,擁有完整的日志記錄.
官方主頁:http://www.dataparksearch.org/
7.Zettair
基於倒排序索引結構的全文搜索開源引擎。基於C語言。
Zettair是根據Justin Zobel的研究成果為基礎的全文檢索實驗系統.它是用C語言實現的. 其中Justin Zobel在全文檢索領域很有名氣,是業界第一個系統提出倒排序索引差分壓縮算法的人,倒排列表的壓縮大大提高了檢索和加載的性能,同時空間膨脹率也縮小到相當優秀的水平. 由於Zettair是源於學術界,代碼是由RMIT University的搜索引擎組織寫的,因此它的代碼簡潔精煉,算法高效,是學習倒排索引經典算法的非常好的實例. 其中支持linux,windows,mac os等系統.
官方主頁:http://www.seg.rmit.edu.au/zettair/about.html
參考文章:zettair介紹
http://blog.csdn.net/yijiyong100/article/details/11928453
8.Indri
支持文檔索引。
http://blog.csdn.net/sharpdew/article/details/438250
Indri是一個用C語言和C++語言寫的全文檢索引擎系統,是由University of Massachusetts和Carnegie Mellon University合作推出的一個開源項目. 特點是跨平台,API接口支持Java,PHP,C++.
官方主頁:http://www.lemurproject.org/indri/
9.Terrier
桌面搜索引擎
http://www.ibm.com/developerworks/cn/opensource/os-desktopsearch/index.html
Terrier是由School of Computing Science,Universityof Glasgow用java開發的一個全文檢索系統.
官方主頁:http://terrier.org/
10.Galago
Galago是一個用java語言寫的關於文本搜索的工具集. 其中包括索引引擎和查詢引擎,還包括一個叫TupleFlow的分布式計算框架(和google的MapReduce很像).這個檢索系統支持很多Indri查詢語言.
官方主頁:http://www.galagosearch.org/
11.Zebra
Zebra是一個用C語言實現的檢索程序,特點是對大數據的支持,支持EMAIL,XML,MARC等格式的數據.
官方主頁:https://www.indexdata.com/zebra
開源搜索引擎的比較,可能資料比較陳舊了。
下面這個13年的資料
