Java Lucene 5.5.3使用递归前缀树策略的空间索引

Java Lucene 5.5.3使用递归前缀树策略的空间索引,java,lucene,spatial,Java,Lucene,Spatial,我想对形状进行空间索引,以支持多边形和基于点的查询。然而,我很难创建这方面所需的lucene文档。其思想是使用递归前缀树根据geohash对形状进行快速过滤,然后通过检查形状的序列化来执行粒度过滤,以查看查询的多边形是否确实匹配() 我遇到的第一个问题是无法创建要添加到空间文档的可索引字段: Document doc = new Document(); Field[] fields = rptStrategy.createIndexableFields(spatial4jShape.getBou

我想对形状进行空间索引,以支持多边形和基于点的查询。然而,我很难创建这方面所需的lucene文档。其思想是使用递归前缀树根据geohash对形状进行快速过滤,然后通过检查形状的序列化来执行粒度过滤,以查看查询的多边形是否确实匹配()

我遇到的第一个问题是无法创建要添加到空间文档的可索引字段:

Document doc = new Document();
Field[] fields = rptStrategy.createIndexableFields(spatial4jShape.getBoundingBox());
for (Field f : fields) {
  doc.add(f);
}
我遇到的第二个问题是无法为序列化部分使用Jts形状:

fields = dvStrategy.createIndexableFields((Shape)spatial4jShape);
这引发了一个非法的争论
java.lang.IllegalArgumentException:不支持的形状类com.spatial4j.core.shape.jts.JtsGeometry

我现在的问题是

  • 递归前缀树有什么问题
  • 如何使用序列化策略对多边形本身进行索引
  • 完整代码: 为时已晚,但可能会有所帮助

     private val ctx = new JtsSpatialContextFactory().newSpatialContext
    
    并直接使用形状

    Field[] fields = rptStrategy.createIndexableFields(spatial4jShape);
    
    Field[] fields = rptStrategy.createIndexableFields(spatial4jShape);