JavaEye3.0開發手記之四 - ruby的全文檢索索引

來源:互聯網
上載者:User

在Java平台上面,lucene是眾望所歸的全文檢索索引工具,lucene效能不俗,程式穩定,第三方擴充和分 詞演算法眾多,但是在RoR方面,就沒有那麼幸運了,JavaEye網站要做全文檢索索引,怎麼來解決全文檢索索引的問 題呢?

在ruby平台上面,全文檢索索引有三個途徑:

1、solr, acts_as_solr

solr是apache開源組織的一個項目,完全基於lucene的最新版本,在lucene的上層提供了一個基於 HTTP/XML的Web Services。solr的發行包自己綁定了jetty6.0應用伺服器,可以直接啟動,成為一個獨立 的全文檢索索引的web服務。

由於和solr的通訊方式是標準的基於HTTP的XML,所以你可以使用任何程式設計語言,Java,C++,Ruby, Python都不在話下。你通過向solr發送xml查詢請求,讓solr在後台運行lucene,返回結果也被封裝為xml ,當然你也可以讓solr去做索引。基本上solr就是 lucene的一個Web服務的封裝。solr的優勢在於為大規 模的全文檢索索引做了很多緩衝最佳化,由於採用xml,也不限於用戶端的種類。

RoR有一個叫做acts_as_solr的外掛程式,封裝了ruby對solr的訪問,如果你喜歡用solr作為全文檢索索引, acts_as_solr是一個不錯的選擇,他可以很方便的讓你的RoR應用添加全文檢索索引功能,考慮到lucene的穩 定性,這個方案是一個相當不錯的選擇。

但是這個方案的缺點也是顯而易見的,你的RoR應用所有的全文檢索索引都要依賴後台再次向solr伺服器發 送web請求來擷取結果,單個頁面的執行速度肯定會受限於背景跨http的web請求,這對於那些對全文檢 索功能依賴特別多的網站來說,恐怕很難接受。因此JavaEye3.0不採用solr方案。

2、sphinx

http://robbin.javaeye.com/blog/122696

我已經在上一篇部落格當中介紹了sphinx。我個人非常青睞sphinx這種獨立的第三方全文檢索索引伺服器, 而且能夠和MySQL結合的很好,更不用說其優異的效能了。但是sphinx的缺點在於沒有很好的分詞擴充的 介面,它是一個純C開發的服務。這對於中文分詞功能的支援來說,就很難實現了,因此不得不遺憾的放 棄。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.