我试图让SOLR范围查询正常工作。我有一个包含超过12百万个文档的数据库,我正在通过几个参数进行过滤,例如:
product_category:"category1" AND product_group:"group1" AND product_manu:"manufacturer1"
查询本身返回大约700个文档,平均在两到三秒内执行。
但是当我想在该查询中添加日期范围方面时(我希望看到过去x年每天添加了多少产品),它会在50秒或更长时间内执行。因此,似乎只需检索所有匹配的文档并在java中执行手动计数就会更快。 所以我想我必须做错分面?
这是一个示例分面查询:
start=0&rows=0&facet.query=productDate%3A[0999-12-26T23%3A36%3A00.000Z+TO+2012-05-22T15%3A58%3A05.232Z]&q=source%3A%22source1%22+AND+productCategory%3A%22category1%22+AND+type%3A%22type1%22&facet=true&facet.limit=-1&facet.sort=count&facet.range=productDate&facet.range.start=NOW%2FDAY-5000DAYS&facet.range.end=NOW%2FDAY%2B1DAY&facet.range.gap=%2B1DAY
我唯一的解释是,SOLR计算的是一些较大的文档池中的字段而不是我的700文档,这些文档来自" q ="参数。或许我应该以另一种方式过滤文件?
我尝试过更改filterCache大小并且它可以工作,但对于像这样的查询来说,这似乎是浪费内存。毕竟聚合700多个文件应该非常快吗?