2

lucene.net を使用した地理位置情報検索の実装の検索で、leapinggorilla.com からこの記事に遭遇し、ソース コードをダウンロードしましたが、コンパイルに失敗しました。ナゲットを使用して参照を追加しましたが、まだ運がなく、オブジェクトを使用してアセンブリを参照すると、名前空間も見つかりません。

私が欠けているものへの提案はありますか?

ありがとう

4

3 に答える 3

1

Lucene 3.x の空間モジュールにはバグがあり、保守されていないことが判明したため、Lucene 4.x では削除されています。Lucene 4.x には、私が他の 2 人と共同で開発した新しい空間モジュールがあります。ダウンロードした場合は、テストで「SpatialExample.java」を確認する必要があります (.net に相当するものがある可能性があります)。また、Lucene/Solr Revolution で私が行ったプレゼンテーションを見たり、スライドをめくったりすることもできます: http://www.lucenerevolution.org/2013/Lucene-Solr4-Spatial-Deep-Dive

于 2013-06-05T14:59:22.960 に答える
0

Lucene.Net はバージョン 3.0.3 で、3.x 空間モジュールも削除されました。4.x 空間モジュールは、java lucene 4.x からバックポートされました。ソースはこちら、単体テストはこちら

残念ながら、これは古いブログ投稿のほとんどが新しい API で直接動作しないことを意味します。ただし、ほとんどの API 呼び出しは Java と同じでなければならないので、Java 用に書かれたブログ投稿はすべて .NET に変換できると思います。

于 2013-06-05T15:11:36.553 に答える
0

特定の半径の円内で、(中心点からの)順序付けによる空間検索を可能にするLucene.NET 3.0.3 ソリューションがあります。

答えはStackOverflowにあり、完全な VS ソリューションはGitHubにあります。

空間検索を実行するコードの重要な部分は次のとおりです。

var spatialArgs = new SpatialArgs(SpatialOperation.Intersects, searchArea);
var spatialQuery = _strategy.MakeQuery(spatialArgs);
var valueSource = _strategy.MakeRecipDistanceValueSource(searchArea);
var valueSourceFilter = new ValueSourceFilter(new QueryWrapperFilter(spatialQuery), valueSource, 0, 1);

var filteredSpatial = new FilteredQuery(query, valueSourceFilter); // Restricts results to searchArea
var spatialRankingQuery = new FunctionQuery(valueSource); // Orders results by distance (closest first)

var bq = new BooleanQuery();
bq.Add(filteredSpatial,Occur.MUST);
bq.Add(spatialRankingQuery,Occur.MUST);

ご不明な点がございましたらお知らせください。興味のある方は、完全なソリューションをダウンロードして調べることをお勧めします。

于 2016-02-28T03:11:20.777 に答える