自定义存储库的Spring Data Solr优先级

时间:2014-01-29 12:30:52

标签: java spring solr spring-data 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和Z)

有什么想法吗?

1 个答案:

答案 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));