2014-09-03 77 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