Hibernate 搜索边界框搜索

Hibernate search bounding box search

我正在使用 Hibernate Search 5 to implement a full text service implementation with Apache Lucene. I'm able to get the text search working by following the steps in this site

现在我需要在实体中添加一个地理位置 (lat/lon) 字段并引用此 documentation,似乎休眠允许使用 @Latitude & [=12 定义一个=]注解.

我的要求是找到与给定关键字匹配并落在边界地理多边形内的所有实体(给定边界框的左上角点和右下角点)。

进一步参考 hibernate 文档,我发现支持在特定距离(更像是边界圆)内查找实体,如下所示

org.apache.lucene.search.Query luceneQuery = builder
  .spatial()
  .within( radius, Unit.KM )
    .ofLatitude( centerLatitude )
    .andLongitude( centerLongitude )
  .createQuery();

有没有办法通过边界多边形而不是半径来进行搜索?

作为解决方法,我可以提供足够大的半径来限制我的框,但我最终会过度获取数据。

Hibernate Search 5 不支持边界框查询。

Hibernate Search 6 中有这样的支持:请参阅 this part of the documentation。 Hibernate Search 6 目前处于 Beta 阶段,API 与 Hibernate Search 5 不同。