使用spatial.net和lucene.net 2.9的搜索结果不一致

时间:2011-04-12 22:36:37

标签: c# search-engine lucene.net spatial

您好 我目前正致力于使用c#,lucene.net和spatial.net

为网站实现空间搜索功能

我遇到的问题如下:

我索引5个文件,其中包含以下位置:
文件1:加利福尼亚州洛杉矶 文件2:加利福尼亚州帕萨迪纳市 文件3:加利福尼亚州圣莫尼卡市 文件4:加利福尼亚州萨克拉门托市 文件5:丹佛,CO

然后我继续使用洛杉矶点作为原点对结果索引(对于我的NUnit测试,我正在使用RAMDirectory)运行多次搜索,并将其作为数据的一部分。

半径结果通过
10英里1是
20英里2没有
25英里2没有
50英里3是

请注意,我在20英里搜索时开始尝试了3个结果。 这也适用于其他一些半径值,例如5000英里只返回1个结果,当我在3500英里时获得所有5个文档。

是否有人知道可能导致此问题的spatial.net代码中的错误? lucene的.net版本是2.9.2,也许这已在后来的版本中得到解决。任何帮助将不胜感激,谢谢

2 个答案:

答案 0 :(得分:2)

我终于有了这个工作。当前版本的lucene.net中的spatial.net contrib模块有一个错误 此错误使搜索在某些边缘情况下失败。问题是由CartesianShapeFilter类引起的。 我所做的是从lucene的Java版本获取源代码并仅移植空间贡献代码 在每个课程被移植后,我会再次编译并运行我的测试。 最后,我把它缩小到这个班级 我希望这对某人有所帮助,如果你想要这个代码,我会向在lucene.net工作的人发送一个补丁,这样就可以使它可用。

答案 1 :(得分:0)

您所做的更改是否真的包含https://issues.apache.org/jira/browse/LUCENE-1930中列出的错误修正?在德国的距离过滤协调中,我遇到了Spatial.NET中的那些错误。我不得不使用极高的距离来获得一些结果。在补丁中描述的修复之后,即使使用非常小的盒子,它也能正常工作。