spring - Pageable 不能为 null 在 Spring Data-Solr 中使用组功能时抛出异常
问题描述
使用 springboot data-solr 和 SolrTemplate 的文档示例通过查询创建组时,我收到结果但没有分组信息。查看示例代码时:
Field field = new SimpleField("popularity");
Function func = ExistsFunction.exists("description");
Query query = new SimpleQuery("inStock:true");
SimpleQuery groupQuery = new SimpleQuery(new SimpleStringCriteria("*:*"));
GroupOptions groupOptions = new GroupOptions()
.addGroupByField(field)
.addGroupByFunction(func)
.addGroupByQuery(query);
groupQuery.setGroupOptions(groupOptions);
GroupPage<Product> page = solrTemplate.queryForGroupPage("collection-1", query, Product.class);
GroupResult<Product> fieldGroup = page.getGroupResult(field);
GroupResult<Product> funcGroup = page.getGroupResult(func);
GroupResult<Product> queryGroup = page.getGroupResult(query);
似乎创建了一个组查询,但是对 queryForGroupPage 的调用没有使用它,这可以解释为什么我没有收到任何分组信息。如果我改为将 groupQuery 对象传递给调用,那么我会收到“页面不能为空”错误。
我已经测试了其他查询类型并且没有出现这个错误,所以它似乎只是影响了我的这个功能。我曾尝试使用较旧的 springboot 版本和较旧的 Solr 版本,将两者匹配,并且会发生同样的问题。
我的设置没有任何其他 Solr 问题,所以不要认为我的配置中缺少任何内容。
以下是错误的堆栈跟踪片段。
11:15:14,323 错误 [stderr](默认任务 1)java.lang.IllegalArgumentException:Pageable 不能为空!org.springframework.util.Assert.notNull(Assert.java:198) 处的 11:15:14,325 错误 [stderr](默认任务 1) org.springframework.util.Assert.java:198 处的 11:15:14,326 错误 [stderr](默认任务 1)。 springframework.data.domain.Chunk.(Chunk.java:54) 11:15:14,327 org.springframework.data.domain.PageImpl.(PageImpl.java:46) 11 处的错误 [stderr](默认任务 1): 15:14,328 错误 [stderr](默认任务 1)在 org.springframework.data.solr.core.ResultHelper.convertGroupQueryResponseToGroupResultMap(ResultHelper.java:306) 11:15:14,329 错误 [stderr](默认任务 1)在org.springframework.data.solr.core.SolrTemplate.createSolrResultPage(SolrTemplate.java:448) 11:15:14,330 org.springframework.data.solr.core.SolrTemplate 的错误 [stderr](默认任务 1)。
有没有人看过按功能分组的工作示例?我还搜索了任何内容,但在官方文档的示例代码之外找不到参考。
谢谢,enter code here
解决方案
我想我解决了这个问题。您应该设置 GroupOptions 限制。示例代码如下。
GroupOptions groupOptions = new GroupOptions()
.addGroupByField(field)
.addGroupByFunction(func)
.addGroupByQuery(query)
.setLimit(1000);
groupQuery.setGroupOptions(groupOptions);
我也有同样的问题并通过这样做解决。
推荐阅读
- c# - 为什么我的应用程序在绑定到集合时会进入中断模式?
- android - 尝试读取 zip 文件时出现 android studio 错误
- .htaccess - 更改子文件夹的名称并重定向
- python-3.x - python中的多项式乘法
- angular - Angular Elements 输出在 IE11 中不起作用
- json - 将通用伴随对象传递给超级构造函数
- java - 如何防止 Callable 对长时间运行和繁重的任务感到饥饿?
- lua - Lua / corona sdk 物理.addBody()
- azure - helm 不会为 Azure k8s 创建自定义资源定义
- c# - 在尝试设置实例之前,Entity Framework 使用了默认 DbConfiguration 实例