【发布时间】:2019-01-06 19:14:48
【问题描述】:
我想为大多数电子商务网站的产品添加过滤功能。我应该如何根据所选类别获得最低和最高价格?
我已经使用带有 Spring Boot 数据 JPA 的休眠搜索实现了产品过滤器搜索...我正在使用布尔查询构建器根据用户从过滤器中实际选择的内容创建动态查询...举个例子...假设我选择男士服装类别,我也得到了属于带有左侧过滤器的服装类别的产品的结果。假设在该类别中,我只允许选择价格范围滑块 100 到 100,这意味着最低产品价格为 100,最高价格为 1000 ......之后我正在使用左侧过滤器(如尺寸和品牌等)过滤产品数据。如果我选择了一个品牌,那么数据将再次刷新为新的价格值,即仅具有品牌类别的服装产品的最小值和最大值。我应该如何在休眠状态下进行操作搜索??
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory().buildQueryBuilder()
.forEntity(Product.class).get();
Query categoryQuery = queryBuilder.keyword().onFields("subcategory.category.categoryName").matching("Clothing")
.createQuery();
BooleanQuery.Builder builder = new BooleanQuery.Builder();
builder.add(categoryQuery, BooleanClause.Occur.MUST);
FullTextQuery query = fullTextEntityManager.createFullTextQuery(builder.build(), Product.class);
query.getResultList();
以上是我选择所有类别产品的示例代码。在此我应该如何创建查询以从所选类别中获取最低和最高价格,并添加额外的过滤器将再次更改我的旧价格值..请给我建议..我想要与大多数电子商务网站一样的功能来过滤产品,或者还有其他方法可以做到这一点???..提前谢谢..
【问题讨论】:
-
我建议查询最小值和最大值,而不是获取所有值。让数据库来完成工作,它通常会更有效率,并且可以避免在数据过多时出现内存不足的情况。
-
@JonathanRosenne :是的..但问题是在过滤器中选择 4 个或多个品牌我不能使用此查询..这将返回列或所选类别的最小值和最大值..当使用一个过滤器时或更多条件我应该如何根据我应用的过滤器获得最小值和最大值??
标签: java hibernate hibernate-search