2014-09-03 76 views
1

我是mongodb及其與Solr集成的初學者。從不同的帖子我瞭解了集成步驟。但需要下面的信息MongoDB與Solr集成

  1. 我有mongodb中的數據,爲了更快的檢索,我們正在將它與Solr集成。 Solr索引所有的mongodb條目。這是索引集成後的一次性活動還是我們需要定期更新Solr以索引集成後插入的條目?

  2. 如果我們需要定期更新solr,那麼將它保留在Solr以及mongodb中將成爲額外的開銷。克服它的最佳方法。

回答

9

據我所知,你沒有官方(支持/完整)解決方案來集成MongoDB和Solr,但讓我給你一些想法/方向。

  1. 對我來說,最好的辦法是當它是可以修改的應用程序並添加持久層,你必須在「相同的」時間MongoDB中和Solr完成所有的寫操作的事實。就像那樣,您可以準確控制要發送到數據庫的內容以及要爲全文操作編制索引的內容。但正如我所說,這意味着你必須改變你的應用程序代碼。 (無論如何,您都可以將其更改爲在需要時查詢Solr)。是的,你必須索引所有現有的文件第一次

  2. 你可以使用「連接器」的方法,其中MongoDB和Solr是一種連接在一起,這可以以各種方式完成。

    可以使用例如MongoDB的連接器可在這裏:https://github.com/10gen-labs/mongo-connector

    LucidWorks,後面的Solr公司還擁有MongoDB的連接器,記錄在這裏:http://docs.lucidworks.com/display/help/Create+a+New+MongoDB+Data+Source#(我沒有使用過它,不能發表評論,但它是還有一種方法)

你點#2是真實的,你必須要管理兩個集羣,並確保數據是同步的,有時付出Solr的索引和剛剛更新的文件不一致的價格MongoDB ...所以你需要看看你的應用程序的最佳方法是使用MongoD單獨的B或使用Solr的MongoDB(見下面的評論)

只是除了這個答案小評: 你說的是「更快檢索」,不知道這應該是這個原因,如果你寫有正確的查詢在MongoDB中正確的索引你應該可以在沒有Solr的情況下完成。如果你的要求是真正面向solr含義的權力:全文索引(具有所有相關功能它是有道理的)

+0

感謝Tug Grall的詳細回覆。 我們也有在mongo中構建的文本搜索功能,它具有很好的索引功能,從更快的檢索角度來看,它會接近Solr的檢索性能嗎? 即使它接近,我們也很好。基本上,我們在mongodb索引VS Solr搜索結果上嘗試了一個小的POC。 – Shivaprasad 2014-09-04 04:17:21

+0

是的,它應該是,但你可以猜到它取決於很多數據集本身,查詢的類型......最好的是真正要測試的。 (應該很容易,因爲你已經有了你的數據並且知道你想要哪個查詢) - 只要確保讓我指出你的文檔:http://docs.mongodb.org/manual/core/index-text/ – 2014-09-04 08:18:50

1

你的數據有多大? MongoDB有自己的一些很好的索引機制。

有一個強大的地理api和全文搜索http://docs.mongodb.org/manual/core/index-text/。因此,確定您的需求是否適合MongoDB或您需要向SOLR溢出是理想選擇。

關於索引部分。您的數據更新的頻率如何?如果您能負擔得起不經常更新,那麼每天一次重新索引的批量作業可能適合您。理想情況下,SOLR適用於某些形式的主數據。

+0

1 。數據在分佈在多個分片中的TB中相當龐大。 2.數據更新有兩種方式: a:在線 b:在批次 – Shivaprasad 2014-09-04 04:31:24

+0

按照拖輪的建議嘗試使用lucidworks的Mongo連接器可能很有用。它看起來像使用oplog提取數據,所以它可能接近實時。這可能接近你想要的 - 可能值得一看。當然,最好的事情是,如果你可以使用Mongo 2.6+並使用文本搜索API。祝你好運! – 2014-09-05 11:15:24