開源搜索引擎程序有3大類
- lucene系,java開發,包括solr和elasticsearch
- sphinx,c++開發,簡單高性能
- Xapian,c++開發
搜索引擎程序這個名稱不妥當,嚴格說來應該叫做索引程序(indexing program),早期主要用來做中文全文搜索,但是隨著互聯網的深入普及,各家網站規模越來越大,索引程序在優化網站架構上發揮了更大的作用:替代mysql數據庫內置的索引
- 讓mysql no sql化,只承擔數據持久化存儲的功能
- 消除join查詢/子查詢,提高數據庫的并發處理能力
使用狀況
Lucene出自名門,子孫興旺,而且它的兄弟Hadoop風頭正盛,所以名氣最大,而sphinx因為簡單可靠,代碼結構優良,性能非常好,在國內大型網站中使用最廣.xapian用戶太少,不建議使用
技術選型要選人最多的方向,不可標新立異
Lucene系
-
Lucene 就是一個純粹的索引程序代碼包,使用的時候,你得寫一個簡單的server程序(接受關鍵詞-通過lucence查詢-返回結果),然后配置在應用服務器中(tomcat/Resin),一般來說,這個server程序會采用http協議,或者xml-rpc,直接用tcp那也太無聊了
-
Solr 有大俠急公好義,幫你把上文提到的web 程序寫好了,你只需要配置部署就可用,這就是solr,solr對外的接口是http協議,也支持分布式索引
-
Elasticsearch,新項目,最近很紅,其實也是Lucene的馬甲,有如下特點
- restful接口
- 分布式導向,包括分布式搜索,分布式索引,零配置,自動分片,索引自動負載
- 針對實時搜索專門優化:先把索引放在內存中,定期同步到硬盤
- 附帶web 圖形化管理工具
sphinx平均查詢時間一般=20ms,elasticsearch有數據說是200ms
elasticsearch 從設計思路上是針對 Amazon CloudSearch,它的關鍵詞是
- 分布式
- 實時
- 高可用
這幾點一看就是高富巨,日uv幾百萬的網站,索引也只有幾十G,普通玩家是用不著的
但是從緊跟前沿技術的角度,如果你的索引服務器超過3臺,可以嘗試部署elasticsearch,性能現在是差點,但硬件和時間會幫你搞定一切
本文地址: http://lutaf.com/158.htm 魯塔弗原創文章,歡迎轉載,請附帶原文鏈接