5

Solr 3.5 によってインデックス付けされた多数のドキュメントがあり、それらには日付フィールド (solr.DateField) が含まれています。ここで、結果を返さない Solr コンポーネントにリクエストを行います。

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 のバグのようです。残念ながら、この問題に関する参考文献は見つかりませんでした。問題を回避または解決する方法はありますか?

4

1 に答える 1

6

そうです、問題は平均値を計算することです:

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

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

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

更新SOLR-3160
ジラの問題を 開き、コミットされたばかりのパッチを提供しました。Solr の次のリリースには修正が含まれます。

于 2012-02-21T09:55:36.747 に答える