我目前正在使用solr来存储公共推文信息。我有内容,情感,关键字,tstamp,语言,tweet_id等字段来捕捉推文的精髓。我也在评估Mongodb的相同用例。我正在尝试对每个一百万条记录的mongodb和solr进行基准测试。
我观察到的是mongodb中的组查询比solr的facet查询慢2.5到3倍。
以下mongodb查询
db.tweets.aggregate(
[
{
$group : {
_id : "$sentiment",
total : { $sum : 1 }
}
}
]
)
需要481毫秒。我已将索引应用于情绪领域。
然而,使用facet查询的solr中的相同内容需要93ms。
是否需要设置mongodb中的其他配置以提高mongodb中的组查询性能?
答案 0 :(得分:0)
$group
operation和方面搜索不是真正可比的操作,$group
不会使用索引。您似乎正在尝试计算每个不同值sentiment
的文档数。 MongoDB没有特定的功能。对于特定值,获得计数的更好操作将是
db.collection.count({ "sentiment" : sentiment })
您可以使用
获取所有不同的值db.collection.distinct("sentiment")
这两个都可以使用索引{ "sentiment" : 1 }
。您将需要多个查询来获取sentiment
的多个值的计数,因此它不如Solr方便。分面搜索是全文搜索引擎的核心竞争力,因此在Solr中比MongoDB更容易实现这一点并不奇怪。 MongoDB和Solr意味着完全不同的用途,所以我不能说我会明白你为什么要对其他人进行基准测试。这就像在一辆汽车上撞船一样。