Hibernate 休眠搜索:空间+;低于条件

Hibernate 休眠搜索:空间+;低于条件,hibernate,lucene,hibernate-search,Hibernate,Lucene,Hibernate Search,我想为hibernate搜索空间查询添加一些条件。我有一个类Store,它有纬度和经度。它还具有价格属性。我想找到一个特定位置附近的所有商店,其价格点低于给定的输入值。以下是我当前代码的外观: Session session = getSession(); //getting org.hibernate.Session FullTextSession fullTextSession = Search.getFullTextSession(session);

我想为hibernate搜索空间查询添加一些条件。我有一个类
Store
,它有纬度和经度。它还具有价格属性。我想找到一个特定位置附近的所有商店,其价格点低于给定的输入值。以下是我当前代码的外观:

        Session session = getSession(); //getting org.hibernate.Session
        FullTextSession fullTextSession = Search.getFullTextSession(session);
        QueryBuilder builder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Store.class).get();
        org.apache.lucene.search.Query luceneQuery = builder.spatial().onDefaultCoordinates().within(radius.doubleValue(), Unit.KM).ofLatitude(lat.doubleValue())
                .andLongitude(lon.doubleValue()).createQuery();
        Query hibQuery = fullTextSession.createFullTextQuery(luceneQuery, Store.class);
        @SuppressWarnings("unchecked")
        List<Menu> menus = (List<Menu>) hibQuery.list();
Session Session=getSession()//获取org.hibernate.Session
FullTextSession FullTextSession=Search.getFullTextSession(会话);
QueryBuilder builder=fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Store.class.get();
org.apache.lucene.search.Query luceneQuery=builder.spatial().onDefaultCoordinates()。在(radius.doubleValue(),Unit.KM.)以内的纬度(lat.doubleValue())
.AND经度(lon.doubleValue()).createQuery();
Query hibQuery=fullTextSession.createFullTextQuery(luceneQuery,Store.class);
@抑制警告(“未选中”)
列表菜单=(List)hibQuery.List();

我想用小于的条件为其添加一个条件。我可以添加
hibQuery.setParameter(“属性”、“值”)到它。但我无法添加小于的标准。有关于我如何做到这一点的提示吗?

您需要在价格字段上创建一个范围查询,如下所示:

Query priceQuery = builder.range().onField("price").below(maxPrice)
    .createQuery();
然后,您需要使用布尔查询组合两个查询,如下所示:

Query mainQuery = builder.bool().must(luceneQuery).must(priceQuery)
    .createQuery();
您将使用此查询查找结果

请注意,为了有效地执行范围查询,您需要确保您的
价格
字段用
@NumericField
以及
@field
注释