Solr與Sphinx的比較
來自: http://blog.csdn.net//wgw335363240/article/details/37931941
Solr與Sphinx的比較
Solr版本:4.8.1
Coreseek版本:3.2.14 (基于Sphinx 0.9.9 release)
1.索引效率
Sphinx:10-15MB/秒, 實測最高可對100GB的文本建立索引,單一索引可包含1億條記錄
Solr:10MB/秒,億條數據,20G索引,新浪目前也采用lucene檢索
2.搜索性能
Sphinx:高性能搜索,在2-4GB的文本數據上,平均每次檢索響應時間小于0.1秒;在1.2G文本,100萬條文檔上進行搜索,支持高達每秒150~250次查詢;
Solr:高性能搜索,8G的索引文件,檢索響應時間為150ms。高峰支持500并發/秒。
3.擴展性
Sphinx:高擴展性
Solr:高擴展性
4.相關度算法
Sphinx:基于短語相似度和統計(BM25)的復合Ranking方法,支持動態計算得分
Solr:支持動態計算得分,也支持索引時計算得分
5.是否支持短語搜索
支持
支持
6.是否支持分布式搜索
支持
支持
7.是否支持Mysql引擎
支持
支持
8.是否支持多個字段全文檢索
支持
支持
9.數據交互
http請求,Xml、Json
http請求,Xml、Json
10.數據源
Sphinx:mysql, pgsql, mssql, xmlpipe , xmlpipe2, odbc,python
Solr:mysql,Xml,json,csv,odbc
11.多索引
支持
支持
12.多核(不同去多索引)
Sphinx:不支持
Solr:支持
- 中文分詞的支持比較
sphinx目前只支持mmseg3,sphinx for chinese兩種分詞,目前大家使用的比較多的是mmseg3。mmseg3的詞庫需要預先編譯,不利于詞庫的擴充。
Solr目前支持的詞庫比較多,目前支持的有庖丁,IK,mmsegj4,通過比較分詞效果,IK在分詞的查全和查準的效果上更好一些。IK分詞支持設置停用詞和擴展詞庫,擴展詞庫每個詞一行的方式進行擴展。 - 從Mysql數據庫索引數據的支持
sphinx可以通過配置數據源的方式直接從mysql中索引數據,在數據量比較大的時候,可以設置主索引+增量索引的方式來同步數據。但是主索引需要是根據Mysql表的主鍵Id來設置索引范圍,比如Id小于9000,000,Id大于9000,000的通過增量索引來同步。這種只適應Id小于9000,000的數據更新頻繁的情況。
如果主索引和增量索引是以記錄的最后更新時間來區分的話,由于主索引和增量索引使用的是2個不同的索引文件,這就會造成主索引和增量索引中的數據不一致,導致檢索時出現本不該出現的記錄。這種情況就需要把增量索引合并到主索引中,如果主索引的數據比較大,不確定合并的時間需要多少。
solr索引mysql數據時,可以配置成主索引+增量索引,主索引和增量索引之間以更新的時間戳為分割線,solr會記錄每次更新的時間戳。由于solr的增量索引和增量索引使用的都是一個索引文件,所以在執行增量索引時會自動合并到最終的索引中。 - 實時檢索的支持
sphinx本身不支持中文分詞,Coreseek是現在用的最多的sphinx中文全文檢索,它提供了為Sphinx設計的中文分詞包LibMMSeg。Coreseek目前穩定版是3.2.14(基于Sphinx 0.9.9 release開發),該版本還不支持實時檢索。目前Coresekk4.1還是測試版,測試版本支持實時檢索,但是不太穩定。
solr的索引支持實時新增、更新和刪除,可以根據記錄的最后更新時間實現增量更新,在增量更新數據不多的情況下,可以設置增量更新任務為10秒更新一次。從而達到數據的實時同步。