Solr與Sphinx的比較

EdgBrockman 8年前發布 | 12K 次閱讀 搜索引擎

來自: 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:支持

  1. 中文分詞的支持比較
              sphinx目前只支持mmseg3,sphinx for chinese兩種分詞,目前大家使用的比較多的是mmseg3。mmseg3的詞庫需要預先編譯,不利于詞庫的擴充。
              Solr目前支持的詞庫比較多,目前支持的有庖丁,IK,mmsegj4,通過比較分詞效果,IK在分詞的查全和查準的效果上更好一些。IK分詞支持設置停用詞和擴展詞庫,擴展詞庫每個詞一行的方式進行擴展。
  2. 從Mysql數據庫索引數據的支持
            sphinx可以通過配置數據源的方式直接從mysql中索引數據,在數據量比較大的時候,可以設置主索引+增量索引的方式來同步數據。但是主索引需要是根據Mysql表的主鍵Id來設置索引范圍,比如Id小于9000,000,Id大于9000,000的通過增量索引來同步。這種只適應Id小于9000,000的數據更新頻繁的情況。
            如果主索引和增量索引是以記錄的最后更新時間來區分的話,由于主索引和增量索引使用的是2個不同的索引文件,這就會造成主索引和增量索引中的數據不一致,導致檢索時出現本不該出現的記錄。這種情況就需要把增量索引合并到主索引中,如果主索引的數據比較大,不確定合并的時間需要多少。
            solr索引mysql數據時,可以配置成主索引+增量索引,主索引和增量索引之間以更新的時間戳為分割線,solr會記錄每次更新的時間戳。由于solr的增量索引和增量索引使用的都是一個索引文件,所以在執行增量索引時會自動合并到最終的索引中。
  3. 實時檢索的支持
            sphinx本身不支持中文分詞,Coreseek是現在用的最多的sphinx中文全文檢索,它提供了為Sphinx設計的中文分詞包LibMMSeg。Coreseek目前穩定版是3.2.14(基于Sphinx 0.9.9 release開發),該版本還不支持實時檢索。目前Coresekk4.1還是測試版,測試版本支持實時檢索,但是不太穩定。
            solr的索引支持實時新增、更新和刪除,可以根據記錄的最后更新時間實現增量更新,在增量更新數據不多的情況下,可以設置增量更新任務為10秒更新一次。從而達到數據的實時同步。

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