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

本文关键字:net 搜索结果 不一致 lucene spatial 使用 | 更新日期: 2023-09-27 17:50:14

你好我目前正在使用c#、lucene.net和spatial.net 为网站实现空间搜索功能

我遇到的问题如下:

我用以下位置索引5文档:
文件1:加利福尼亚州洛杉矶
文件2:加利福尼亚州帕萨迪纳
文件3:加利福尼亚州圣莫尼卡
文件4:加利福尼亚州萨克拉门托
文件5:科罗拉多州丹佛

然后,我使用洛杉矶点作为原点,并将其作为数据的一部分,对生成的索引进行几次搜索(对于NUnit测试,我使用的是RAMDirectory(。

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

请注意,我从20英里的搜索开始就推断出了3个结果。其他一些半径值也会发生这种情况,例如,当我在3500英里处获得所有5个文档时,5000英里只返回1个结果。

有人知道spatial.net代码中的一个错误可能会导致这种情况吗?lucene的.net版本是2.9.2,也许在以后的版本中已经解决了这个问题。如有任何帮助,我们将不胜感激,感谢

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

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

您所做的更改,它们是否真的包含了https://issues.apache.org/jira/browse/LUCENE-1930?在德国进行距离过滤时,我在Spatial.NET中遇到了这些错误。为了取得一些成绩,我不得不使用极高的里程数。在补丁中描述的修复之后,即使是非常小的盒子,它也能正常工作。