2012-02-20 7 views
5

У меня есть ряд документов, индексированных Solr 3.5, которые содержат поля даты (solr.DateField) среди других. Теперь я запрос к компоненте Solr, который не должен возвращать никаких результатов:Деление на нулевую ошибку Solr StatsComponent для поля даты в случае отсутствия результатов

http://example.com/solr/select?fq=sis_field_int:1000& 
stats=true&stats.field=ds_field_date 

и получить ошибку

HTTP Status 500 -/by zero java.lang.ArithmeticException:/by zero at 
org.apache.solr.handler.component.DateStatsValues.addTypeSpecificStats 
(StatsValuesFactory.java:384) at ... 

Если я отправить запрос без статистики части или указать любое поле без даты статистики вместо этого, я получаю ожидается ответ без результатов. Это похоже на ошибку Solr, которая пытается, например. для вычисления среднего значения в этом случае. К сожалению, я не нашел ссылок на эту проблему. Есть ли способ обойти или решить проблему?

ответ

6

Вы правы, проблема вычисления среднего значения:

res.add("mean", new Date(sum/count)); 

sum и count оба long. Когда count равно нулю, вы получите ArithmeticException. Фактически вы делаете статистику в поле даты, которое никогда не имеет значения в вашем индексе. Простейшим обходным решением было бы создание статистики на поле, которое имеет хотя бы одно значение, поэтому переменная count будет больше нуля, деление будет работать, и статистика будет еще более значимой, я думаю.

Вы не получите ту же ошибку с той же ситуацией, используя числовое поле, потому что в этом случае сумма переменной равна double, поэтому деление не вызывает ошибки, а результат равен NaN. Фактически, существуют различные версии StatsValues, основанные на типе поля.

UPDATE
Я открыл этот вопрос SOLR-3160 JIRA и при условии, патч, который только что было совершено. Следующий выпуск Solr будет содержать исправление!

+0

Не проверяется, равен ли счет нулю? Есть ли способ установить другой обработчик этой ошибки в запросе на Solr, который отвечает HTTP 500? – dev4

+0

@ dev4 Нет чека! Я думаю, что самое лучшее, что нужно сделать, - это открыть тему джиры. Если вы хотите, вы даже можете предоставить патч, иначе я уверен, что кто-то посмотрит на него, я тоже могу это сделать. – javanna

+1

@ dev4 Посмотрите на мой обновленный ответ! Исправление уже выполнено, оно будет доступно со следующей версией Solr! – javanna

 Смежные вопросы

  • Нет связанных вопросов^_^