如何解决Lucene .net 中的多多边形支持
我正在尝试学习 lucene .net 空间功能。
我想找出一个点是否存在于多面体中。
从我对谷歌的研究中,我明白我需要使用网络拓扑套件来描述多边形。
但我找不到最新版本的 Lucene.Net.Contrib.Spatial.NTS。
任何建议(我正在使用 .net 核心)
解决方法
很多这种混淆都围绕着几件事:
全新 Lucene 设计
Lucene 4.x+ 的设计与之前的版本完全不同。 Lucene.Net.Contrib
包不再是该设计的一部分。相反,现在有 specialized modules 用于不同的功能。在这种情况下,您要查找的是 Lucene.Net.Spatial 程序集。
Spatial4n 不再重复类型
在 Spatial4n 0.3.0 中,Spatial4n.Core.NTS
包含所有 Spatial4n.Core
类型的副本。这意味着您不能同时引用这两个库,因为它们具有冲突的类型名称。还需要 Lucene.Net.Contrib.Spatial
复制类型(在 Lucene.Net.Contrib.Spatial.NTS
中)才能访问 NetTopologySuite 的功能。
从 Spatial4n 0.4.1 开始,Spatial4n.Core 类型不包含在 Spatial4n.Core.NTS 中。而是 Spatial4n.Core.NTS
引用 Spatial4n.Core
。
这意味着在 Lucene.NET 4.8 中不需要单独的 Lucene.Net.Spatial.NTS
库来引用 Spatial4n.Core.NTS
(及其重复的 Spatial4n.Core
类型系统)。但是,您可以通过直接引用 Spatial4n.Core.NTS
将 NTS 功能添加到您的项目中。
<ItemGroup>
<PackageReference Include="Spatial4n.Core" Version="0.4.1" />
<PackageReference Include="Spatial4n.Core.NTS" Version="0.4.1" />
</ItemGroup>
示例
正如 Ron C 正确指出的那样,Lucene.Net 4.8.0 代码库中有一些 basic tests NetTopologySuite (NTS) 功能。但如上所述,您需要参考 Spatial4n.Core.NTS
来访问 NTS 的扩展。
还有一些可以分析的使用 NetTopologySuite 的 Spatial4n 额外测试。
如果您需要有关该功能的更多具体信息,我建议您使用术语“Lucene spatial JTS”、“Spatial4j”和“JavaTopologySuite”来搜索 Java 示例。由于移植大部分是逐行完成的,因此 Java 示例应该很容易转换为 .NET。
,我还不熟悉 Lucene.Net 的特定空间特征,但也许这个 NtsPolygonTest 会有所帮助,因为它似乎只是对您正在寻找的功能类型的测试。>
我确实看到大多数空间功能都位于 Lucene.Net.Spatial 命名空间(及以下)中。
此外,看起来 Spatial 功能使用了 Spatial4n nuget package,它是 Spacial4J Java 库的一个端口。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。