2

Lucene Spatialの理解にいくつか問題があります(ドキュメントと良い例が不足していることと、愚かさが原因の1つです!)

クエリを実行しようとしています:-

DistanceQueryBuilder builder = new DistanceQueryBuilder(new Double(point[1]), new Double(point[0]), 1000d,
                    "geohash", CartesianTierPlotter.DEFALT_FIELD_PREFIX, true);


             ConstantScoreQuery queryx = new ConstantScoreQuery(builder.getFilter());               
                org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery(queryx,Address.class);

提供された座標から1000マイル以内に結果があることは確かですが、デバッグを開始する方法がわかりません。

Lukeを使用してインデックスを確認し、指定された領域内にあるジオハッシュの少なくとも2つがLatおよびlongに正しく変換されることを確認しました。

検索で使用されているレベルである_tier_9のインデックスにもフィールドがあります。

私はそれが私が見逃している単純なものであると確信しています、どんな助けも素晴らしいでしょう。

また、以下のようにテストを行って、アドレスオブジェクトがこのメソッドによって検出され、機能することを確認しました。

QueryBuilder qb = fullTextSession.getSearchFactory()

                .buildQueryBuilder().forEntity( Address.class ).get();
                org.apache.lucene.search.Query qbx = qb.all().createQuery();
                org.hibernate.Query fullTextQueryASD = fullTextSession.createFullTextQuery(qbx,Address.class);

                List resultASD = fullTextQueryASD.list(); //return a list of managed objects  

乾杯ロブ

4

1 に答える 1

0

2 のように、1000 より小さい距離値を使用してみてください。

于 2012-03-03T10:43:53.560 に答える