2012-02-20 6 views
5

私は、日付フィールド(solr.DateField)を含むSolr 3.5によって索引付けされた多数のドキュメントを持っています。今、私は結果を返すべきではありません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)); 

sumcountを両方longあります。 countがゼロの場合、もちろんArithmeticExceptionとなります。実際には、インデックスに値を持たない日付フィールドで統計を作成しています。最も簡単な回避策は、少なくとも1つの値を持つフィールドで統計を作成することです。したがって、count変数はゼロよりも大きくなり、除算が機能し、統計はより意味があります。

数値フィールドを使用して同じ状況で同じエラーが発生することはありません。その場合、合計変数はdoubleであるため、除算でエラーが発生せず、結果はNaNです。実際には、フィールドタイプに基づいて異なる実装があります(StatsValues)。

UPDATE
私はSOLR-3160 JIRA課題を開いて、ちょうどコミットされているパッチを提供してきました。 Solrの次のリリースには修正が含まれています!

+0

カウントがゼロに等しいかどうかのチェックはありませんか?このエラーの別のハンドラをリクエストしてSolrに送信する方法はありますか? – dev4

+0

@ dev4チェックはありません!私は最善のことはjiraの問題を開いていると思います。もしあなたがパッチを提供することさえできれば、そうでなければ、誰かがそれを見ていると確信しています、私もそれを行うことができます。 – javanna

+1

@ dev4私の更新された答えを見てください!修正はすでにコミットされており、次のSolrリリースで利用可能になります! – javanna

関連する問題