2

在我使用 lucene.net 搜索地理定位搜索实现时,我从leapinggorilla.com 遇到了这篇文章并下载了源代码但没有编译成功,我使用 nugget 添加了引用但仍然没有运气,如果我使用 object 浏览程序集浏览器,也找不到命名空间。

对我所缺少的有什么建议吗?

谢谢

4

3 回答 3

1

Lucene 3.x 中的空间模块被发现有问题且未维护,因此从 Lucene 4.x 开始它就消失了。Lucene 4.x 有一个新的空间模块,我和另外两个人一起开发。如果您下载它,您应该查看测试中的“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 回答