在我使用 lucene.net 搜索地理定位搜索实现时,我从leapinggorilla.com 遇到了这篇文章并下载了源代码但没有编译成功,我使用 nugget 添加了引用但仍然没有运气,如果我使用 object 浏览程序集浏览器,也找不到命名空间。
对我所缺少的有什么建议吗?
谢谢
在我使用 lucene.net 搜索地理定位搜索实现时,我从leapinggorilla.com 遇到了这篇文章并下载了源代码但没有编译成功,我使用 nugget 添加了引用但仍然没有运气,如果我使用 object 浏览程序集浏览器,也找不到命名空间。
对我所缺少的有什么建议吗?
谢谢
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
我有一个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);
如果有任何不清楚的地方,请告诉我。我敦促任何好奇的人下载并检查完整的解决方案。