我最近在休眠空间中工作,我有一个问题。我想获取多边形内的所有点。我该怎么办?
例如,我的距离查询看起来像这样:
final Coordinates coordinates = Point.fromDegrees(searchDistanceParameters.getLatitude(), searchDistanceParameters.getLongitude());
final Query fromCoordinates = SpatialQueryBuilderFromCoordinates.buildDistanceQuery(coordinates, searchDistanceParameters.getDistance(), "location");
final FullTextSession fullTextSession = Search.getFullTextSession(session);
final FullTextQuery textQuery = fullTextSession.createFullTextQuery(fromCoordinates, GeoPointModel.class);
我创建一个这样的多边形:
GeometryFactory geometryFactory = new GeometryFactory();
Polygon polygon = geometryFactory.createPolygon(coordinates);
但是我可以用来在该多边形内获取点吗?
答案 0 :(得分:1)
Hibernate Search 5的空间支持仅涵盖距离查询。不支持多边形内的匹配点。
Hibernate Search 6确实提供了a "within polygon" predicate,但是Hibernate Search 6中的API与Search 5中的API不同。 如果可以的话,您可以使用最新的Beta:http://hibernate.org/search/releases/6.0/。您可能需要先看看getting started guide for Hibernate Search 6,以便在迁移之前了解新的API。
如果您需要停留在Hibernate Search 5上,则必须使用lucene-spatial
:按照lucene-spatial
的期望实现到索引点的桥接,并直接使用Lucene-Spatial API生成Lucene-Spatial查询。