このプラグインを使用して、Solr で空間クエリを許可しています。ドキュメントに記載されている手順に従いましたが、空間クエリは正常に機能しています。
ここで、計算された距離を取得したいと思います。solrconfig.xml ファイルに次の行を追加しました。
<searchComponent name="geodistance" class="nl.jteam.search.solrext.spatial.GeoDistanceComponent">
<defaults>
<str name="distanceField">geo_distance</str>
</defaults>
</searchComponent>
そして、「geodistance」コンポーネントを標準のリクエスト ハンドラーに追加しました。
<requestHandler name="standard" class="solr.SearchHandler" default="true">
<lst name="defaults">
<str name="echoParams">explicit</str>
</lst>
<arr name="components">
<str>query</str>
<str>geodistance</str>
</arr>
</requestHandler>
次に、「q={!spatial lat=41.641184 long=-0.894032 radius=2 calc=arc unit=km} cafeteria」などのクエリを実行すると、機能しますが、初回のみです。同じクエリを再度実行すると、次のエラーが発生します。
GRAVE: java.lang.NullPointerException
at nl.jteam.search.solrext.spatial.DistanceFieldValueSource.getValues(DistanceFieldValueSource.java:57)
at nl.jteam.search.solrext.spatial.GeoDistanceComponent.process(GeoDistanceComponent.java:60)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:195)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)
クエリが初めて機能し、「geo_distance」フィールドで計算された距離を取得するため、エラーがどこにあるのかわかりません。しかし、クエリを繰り返すと、NullPointerException が発生します。