場景描述:
一開始使用如下**,使用多個過濾條件限制搜尋條件,查詢出的結果會是過濾條件的交集。因為業務需求,需要solr查詢返回多個過濾條件的並集。
solrquery query = new solrquery();
...query.addfilterquery( "file_type:*");
在網上找了很久,只找到一篇講到過濾條件並集的,但是並不適合我的場景
按照這篇文章來做,但是我在控制台輸出query內容時候,發現solr並沒有給我解析成我想要的結果,反而出現了不應該出現的**。然後我去原始碼中找,雖然找得到對應的類和對應的方法,但是,在該文章講到解析dismix的時候,死活找不到跳到該方法的**,我理解是沒有走他說的那一步,或者就是說因為solr版本的問題,我的這個版本沒有按照他說的走。
解決辦法:
在無意間看到有人放出來正常搜尋條件裡有and、or的,然後我就設定了乙個過濾條件,當然這個方法,上面鏈結中也提到,但是被作者否定掉,我就沒有試,結果浪費了大量時間看原始碼。
query.addfilterquery("file_type:入院記錄 or file_type:手術記錄");
結果通過計算兩次的返回條數,和該條返回的條數相加,得到了我想要的結果。
後期補充:
也可以寫成如下樣式:
query.addfilterquery("file_type:(入院記錄 or 手術記錄)");
Oracle 多個查詢結果的交集 差集和並集
1,交集 intersect運算 返回查詢結果中相同的部分。select user id from table1 intersect select user id from table2 2,差集 minus運算 返回在第乙個查詢結果中與第二個查詢結果不相同的那部分行記錄。select user i...
Oracle 多個查詢結果的交集 差集和並集
1,交集 intersect運算 返回查詢結果中相同的部分。select user id from table1 intersect select user id from table2 2,差集 minus運算 返回在第乙個查詢結果中與第二個查詢結果不相同的那部分行記錄。select user i...
MySQL中的查詢過濾條件where
and,or,not between and 別名表示式 首先建立乙個表並新增如下資料,在下述查詢中均用到此表 create table student id char 36 primary key,name varchar 8 not null,age int 3 default 0,mobile...