我正在尝试使 SOLR 范围查询正常工作。我有一个包含超过 1200 万个文档的数据库,并且我通过几个参数进行过滤,例如:
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 个文档应该非常快,不是吗?