2012-02-20 3 views
5

날짜 필드 (solr.DateField)가 포함 된 Solr 3.5에 의해 인덱싱 된 여러 문서가 있습니다. 지금은 아무 결과도 반환해야합니다 SOLR 구성 요소에 대한 요청을 수행합니다결과가없는 경우 날짜 필드 용 Solst 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)); 

sumcount 모두 long 있습니다. count이 0 일 경우 물론 ArithmeticException이됩니다. 실제로 인덱스에 가치가없는 날짜 필드에서 통계를 만들고 있습니다. 가장 쉬운 해결 방법은 하나 이상의 값이있는 필드에 통계를 작성하는 것입니다. 따라서 count 변수가 0보다 큽니다. 해당 부분이 작동하고 통계가 더 의미가 있습니다.

숫자 필드를 사용하여 같은 상황에서 동일한 오류가 발생하지 않습니다.이 경우 합계 변수는 double이므로 오류가 발생하지 않고 결과는 NaN입니다. 사실 필드 유형에 따라 다른 구현이 있습니다.

UPDATE는
나는 SOLR-3160 JIRA 문제를 열어 단지 최선을 다하고있다 패치를 제공했습니다. Solr의 다음 릴리스에는 수정 사항이 포함될 것입니다!

+0

count가 0인지 확인하지 않습니까? 거기에 HTTP 500 답변 다른 Solr 요청에이 오류 처리기를 설정하는 방법이 있습니까? – dev4

+0

@ dev4 수표가 없습니다! 가장 좋은 방법은 jira 문제를 열어 보는 것입니다. 원한다면 패치를 제공 할 수도 있습니다. 그렇지 않으면 누군가가 그것을 보게 될 것이라고 확신합니다. 그렇게 할 수도 있습니다. – javanna

+1

@ dev4 내 업데이트 된 답변을보세요! 수정본은 이미 커밋되었으며, 다음 Solr 릴리스에서 사용할 수 있습니다! – javanna