Hibernate search, ограничивающий рамку поиска - PullRequest
0 голосов
/ 10 апреля 2020

Я использую Hibernate Search 5 для реализации реализации полнотекстового сервиса с Apache Lucene. Я могу заставить текстовый поиск работать, выполнив шаги в этом сайте .

Теперь мне нужно добавить поля географического местоположения (широта / долгота) в сущности и обратиться к эта документация , кажется, что hibernate позволяет определить ее с помощью аннотации @Latitude & @Longitude.

Мое требование - найти все объекты, которые соответствуют данному ключевому слову и попадают в ограничивающий гео-полигон ( учитывая верхнюю левую угловую точку и нижнюю правую угловую точку ограничительной рамки).

Обращаясь далее в документации по спящему режиму, я нашел поддержку для поиска сущностей на определенном расстоянии c (больше похоже на ограничивающий круг) как показано ниже

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

Есть ли способ выполнить поиск с помощью ограничивающего многоугольника вместо радиуса?

В качестве обходного пути я могу дать радиус, достаточно большой, чтобы ограничить свой ящик, однако я буду в конечном итоге делать перебор данных.

1 Ответ

1 голос
/ 14 апреля 2020

В Hibernate Search 5 отсутствует поддержка ограничивающих запросов.

В Hibernate Search 6 есть такая поддержка: см. эту часть документации . Hibernate Search 6 в настоящее время находится в бета-версии, и API отличается от Hibernate Search 5.

...