Spring 中的 Solr Criterian 方法 Boot 优先考虑标准,但也带来其他记录
Solr Criterian method in Spring Boot to prioritize criteria but bring other records as well
我想在 spring 应用程序中设置 solr 查询条件。有什么方法可以先 确定我的标准的优先级,然后按常规顺序排列剩余的记录? 我试过使用:
filterQuery.addCriteria(new Criteria("type").is("abc"));
query.addFilterQuery(filterQuery);
query.setRows(10); // records limit
return query;
现在如果有 5 条匹配的记录,其中 type
是 abc
,solr 将 return 我只是这 5 条记录。但我想要的是填充 10 的限制并相应地获取剩余的记录,而无需设置任何标准。这样我根据条件有5条记录,其余记录按常规顺序排列。
我知道使用标准的 is
方法不可能做到这一点。有什么方法可以帮助我解决我的情况吗?
好吧,有一种方法可以做到这一点,但这不是一种非常有效的方法。
因此,为了首先获取符合条件的那些项目,然后再获取剩余的项目,您可以查询两次 solr。在第一个查询中,您可以像您已经完成的那样设置要获取数据的条件:
filterQuery.addCriteria(new Criteria("type").is("abc"));
query.addFilterQuery(filterQuery);
query.setRows(10); // records limit
return query;
然后,您可以再次配置此条件,这一次,Solr 应该只带来那些 do not
符合条件的项目。您可以这样做:
filterQuery.addCriteria(new Criteria("type").is("abc").not()); // .not() is the magic
query.addFilterQuery(filterQuery);
query.setRows(10); // records limit
return query;
这样,您可能会达到自己想要的效果。
同样,这不是一种非常有效的方法,但它确实有效。
我想在 spring 应用程序中设置 solr 查询条件。有什么方法可以先 确定我的标准的优先级,然后按常规顺序排列剩余的记录? 我试过使用:
filterQuery.addCriteria(new Criteria("type").is("abc"));
query.addFilterQuery(filterQuery);
query.setRows(10); // records limit
return query;
现在如果有 5 条匹配的记录,其中 type
是 abc
,solr 将 return 我只是这 5 条记录。但我想要的是填充 10 的限制并相应地获取剩余的记录,而无需设置任何标准。这样我根据条件有5条记录,其余记录按常规顺序排列。
我知道使用标准的 is
方法不可能做到这一点。有什么方法可以帮助我解决我的情况吗?
好吧,有一种方法可以做到这一点,但这不是一种非常有效的方法。 因此,为了首先获取符合条件的那些项目,然后再获取剩余的项目,您可以查询两次 solr。在第一个查询中,您可以像您已经完成的那样设置要获取数据的条件:
filterQuery.addCriteria(new Criteria("type").is("abc"));
query.addFilterQuery(filterQuery);
query.setRows(10); // records limit
return query;
然后,您可以再次配置此条件,这一次,Solr 应该只带来那些 do not
符合条件的项目。您可以这样做:
filterQuery.addCriteria(new Criteria("type").is("abc").not()); // .not() is the magic
query.addFilterQuery(filterQuery);
query.setRows(10); // records limit
return query;
这样,您可能会达到自己想要的效果。
同样,这不是一种非常有效的方法,但它确实有效。