我需要在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和Z)
有什么想法吗?
答案 0 :(得分:5)
当前的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));