Solr (php vs java): запрос различий при определении количества документов
Hy,
Я заметил некоторые различия при обращении к Solr с помощью Java и PHP. Запрос выглядит вот так:
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 с SolrJ (по умолчанию, если строка не не установить, он будет установлен на 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)
1 ответ
Подтвердили ли вы, что запрос, выполняемый к индексу solr, одинаков для запросов SolrJ и PHP? Особенно учитывая, что вы говорите, что запрос SolrJ не ограничивается указанным диапазоном дат. Это заставило бы меня заподозрить, что что-то неправильно настраивается / передается из SolrJ.
Также, что касается возврата всех строк, вы можете установить для строк в SolrJ абсурдно большое число (около 100 000), которое должно работать в этом случае для вас, исходя из ваших показателей.