我正在开展一个网络项目,我正在考虑设计数据层越多,我认为其中很大一部分可以直接从Solr使用。
例如,faced和count操作改为mapreduce,循环计数或MongoDB中的$ inc。
Solr被称为“搜索”解决方案,但正如我所说,它看起来更像是“db”解决方案。
我对Solr和db解决方案之间的重叠感到“困惑”。
在制作中使用类似的人的建议吗?
感谢, 西尼沙
答案 0 :(得分:0)
Solr用于搜索。它不像普通数据库那样设计为弹性或可靠的数据源,也不能处理数据库可以处理的关系类型。例如,没有办法指定外键或强制约束。
Solr不支持mongoDB可能的'嵌套'数据类型。例如。在文档数据库中,您可以:
{
id: 123,
title: "cat toy stores",
stores: [
{
name: "cats'n'stuff",
address: "123 cat street"
},
{
name: "the catteria",
address: "321 tail lane"
}
]
}
但Solr虽然Solr支持多值字段,但它不能代表name
和address
之间的连接,所以如果它们是给定实体的字段,那么你最终会得到一些东西。以下几行:
{
id: 123,
title: "cat toy stores",
store-names: [
name: "cats'n'stuff",
name: "the catteria"
],
store-addresses: [
address: "123 cat street",
address: "321 tail lane"
],
}
答案 1 :(得分:0)
我已经使用了两者,虽然我同意mongo作为数据库销售而且SOLR明确没有,但我确实认为最小化系统中移动部件的数量总是比适合营销更优先考虑垃圾。因此,我尽可能使用SOLR / Lucene而不是mongo。特别是,如果您需要立即进行搜索。
当然,可以将SOLR DIH配置为从mongo导入,但为什么要为自己创建额外的工作?根据示例代码,将您的信息发布到SOLR中。如果您有其他问题,请与我们联系。