将mongodb与solr集成的动机是什么?

时间:2014-04-25 11:31:26

标签: mongodb solr lucene

Mongodb是一个nosql数据库,除了全文搜索外,可以在其上运行任何查询,因为它会降低整体性能。 Solr是一个搜索引擎。当我们将这两者结合在一起时,那么我们在两个系统中都没有相同的数据吗?因此,如果我们已经存储了数据,为什么我们不直接将它存储在solr和lucene中。顺便说一下,我不确定solr只存储索引或与数据一起存储。

4 个答案:

答案 0 :(得分:4)

好了,我知道原因,因为我们在Solr中配置的字段只存储在lucene中,我们也没有将整个数据存储在lucene中。我们只在lucene中存储搜索条件字段。他们更像是互相完成。用一个例子来解释一下,我说有一个包含40个字段的文档,其中5个是另一个文档。想象一下,我想要查询说我希望文档中的3个特定字段等于某个值,并且在父表的子文档之一中,我有另一个标准,特定字段在一个区间中,另一个标准在另一个区间中包括某些词。为此而不是在mongodb中有额外的索引,我可以通过正确配置solr只在solr中存储这些字段。

答案 1 :(得分:3)

我可能会迟到,但这就是我开始使用solong和mongo的原因 原因是,我将嵌套数据存储在mongodb中,因此即使在根据mongodb的指南进行索引之后查询也太慢了。因此,现在我们开始使用solr进行搜索,使用mongodb来存储数据,并使用solr中的另一个集合进行基于排名的搜索。

我们不会在solr中存储完整数据,只搜索过滤字段和ID,我们利用redis作为缓存来按ID获取数据。

答案 2 :(得分:2)

我在集成Solr和MongoDB方面有一些经验。

我使用Mongo作为数据存储。 Solr充当搜索引擎(服务器)。 因为,Solr给了我更灵活的全文搜索。

Herehere您可以看到如何通过Solr索引mongo数据库。

答案 3 :(得分:1)

我不是MongoDB专家,但从this blog post来看,MongoDB全文搜索非常基本,就像在关系数据库中一样。这对你来说可能就足够了,也可能不是。 Lucene / Solr提供的搜索features遥遥领先。

请注意,您也可以将Lucene / Solr作为主存储引擎。 Lucene提供ACID以及durability after crashes