场景描述:
一开始使用如下代码,使用多个过滤条件限制搜索条件,查询出的结果会是过滤条件的交集。因为业务需求,需要solr查询返回多个过滤条件的并集。
SolrQuery query = new SolrQuery();
...
query.addFilterQuery( "FILE_TYPE:*");
在网上找了很久,只找到一篇讲到过滤条件并集的,但是并不适合我的场景
地址:http://www.cnblogs.com/seaspring/p/6428074.html
按照这篇文章来做,但是我在控制台输出query内容时候,发现solr并没有给我解析成我想要的结果,反而出现了不应该出现的代码。然后我去源码中找,虽然找得到对应的类和对应的方法,但是,在该文章讲到解析dismix的时候,死活找不到跳到该方法的代码,我理解是没有走他说的那一步,或者就是说因为solr版本的问题,我的这个版本没有按照他说的走。
解决办法:
在无意间看到有人放出来正常搜索条件里有AND、OR的,然后我就设置了一个过滤条件,当然这个方法,上面链接中也提到,但是被作者否定掉,我就没有试,结果浪费了大量时间看源码。
query.addFilterQuery("FILE_TYPE:入院记录 OR FILE_TYPE:手术记录");
结果通过计算两次的返回条数,和该条返回的条数相加,得到了我想要的结果。
后期补充:
也可以写成如下样式:
query.addFilterQuery("FILE_TYPE:(入院记录 OR 手术记录)");