由于现在的 需求很变态需要N多条件的叠加,本人就用了一天时间摸索加求助,终于参透出这个q和fq的强大之处。
需求如下图,有三种关系:并且、或、不含
1.如果是或者也就是改变的q的查询条件;
2.如果是并且改变的是fq的查询条件;
3.如果是不含也是改变fq的查询条件;
起初的做二级查询用到了一个fq,举例:查询题名为“测试”并且题名为“改造”的数据,如果你已经入门solr的基础,这个并不难,首先q先查出题名为测试的,fq进行筛选,查询出测试下面的含有改造的信息。
三层就想的有点异想天开了 ,起初我是在原来的fq加了条件为机房的 ,怎么查都是错误的。跟上面的查询结果一样,
后来查资料,问大牛,才知道,小伙子你想的有点多了,三层就是在加一个fq。诧异!吃惊!,试了一把果然如此。
总结一下,超过二次筛选,在加一个fq。相当于Java再new一个对象进行再次筛选。
所以以上需求正确的简单查询:
q:测试
fq:改造
fq:机房
千万别跟我第一想法一样
q:测试
fq:改造 + 机房
好了总结到此!感谢读贴小伙伴。~~~~