java – 自定义存储库的Spring Data Solr优先级
作者:互联网
我需要在Spring Data Solr自定义存储库中实现以下内容:
(X OR Y) AND Z
我目前的代码如下:
Criteria criteria = new Criteria("x").is(X_VALUE);
criteria = criteria.or(new Criteria("y").is(Y_VALUE);
criteria = criteria.and(new Criteria("z").is(Z_VALUE);
但运行此代码我得到以下优先权:
X OR (Y AND Z)
有任何想法吗?
解决方法:
当前的API不允许这种标准组合.有一个附加到DATASOLR-105的补丁可能会有所帮助,虽然它不能完全解决问题.
SimpleStringCriteria的使用现在可能有所帮助.请注意,必须将值转换为Solr可读格式.
new SimpleQuery(new SimpleStringCriteria("(x or y) and z"));
更新
版本1.2将修复此问题,以便可以按如下方式创建查询.
Criteria orPart = Criteria.where("x").is("foo").or("y").is("bar");
Criteria andPart = Criteria.where("z").is("roo");
Query query = new SimpleQuery(orPart.and(andPart));
标签:java,spring,spring-data,solr,spring-data-solr 来源: https://codeday.me/bug/20190831/1773140.html