嗨,
在使用 Java 和 PHP 查询 Solr 时,我注意到了一些差异。查询在这里看起来像这样:
text:(www)+timestamp:[2012-04-16T00:00:00Z TO 2012-04-20T23:59:00Z]&q.op=AND&rows=0&sort=timestamp%20desc&facet=true&facet.field=terms_nouns_lemma&facet.limit=20&facet.method=enum
打印出在 Java 中找到的文档数量时
response.getResults().getNumFound()
我得到了将近 80.000,在 PHP 中也是如此
$response->response->numFound
返回大约 7000。PHP 结果似乎更准确,因为只需要考虑时间范围(并且由于存储文档的性质)。但是,当我进入管理页面并插入我的查询时,我再次得到大约 80.000(它实际上与 Java 的值相同)。
我在这里想念什么?
在我看来,Java 似乎根本不考虑时间框架?或许值得一提的是,我使用的是 Solr 3.5(而 Java 库 SolrJ 是对应的版本)
注意 我认为这个问题非常相关,但它没有回答我的问题,因为它没有考虑限制(如上面查询中的时间范围)。
此外 ,在 PHP 中,如果我没有设置我希望在响应中包含的行数,它实际上会返回找到的正确数量的文档,Java w/SolrJ 中是否有任何等价物(默认情况下,如果row是'不设置,它将设置为10,将其设置为-1也不起作用)
感谢您的任何提示
更新
正如在下面的评论中发布的,查询的不同之处在于 SolrJ 用“+”替换了空白/空格,我尝试使用硬编码并使用 ClientUtils.escapeQueryChars(String) 对其进行转义,但两者都没有按预期工作
真正有趣的是:
text:(www)&facet.range=timestamp&f.timestamp.facet.range.end=2012-04-16T21:59:59.000Z&f.timestamp.facet.range.gap=+1MINUTE&rows=0
返回与
text:(www)