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), которое должно работать в этом случае для вас, исходя из ваших показателей.

Другие вопросы по тегам