2017-06-14 77 views
0

我在solr中工作,我想在SOLR中使用UNION和MINUS的組合。我制定了oracle查詢。UNION和MINUS在SOLR中的使用

select * from TESTTABLE where (FT = 'PE' and emis between 10 and 20) or (FT = 'DI' and emis between 10 and 15) 
union (
select * from TESTTABLE where (FT <> 'PE' or emis not between 10 and 20) and (FT <> 'DI' or emis not between 10 and 15) 
minus 
select * from TESTTABLE where (FT = 'PE' and emis not between 10 and 20) or (FT = 'DI' and emis not between 10 and 15) 
); 

我想制定一個等效的SOLR。請幫助我將oracle查詢轉換爲SOLR。

回答

0

你應該能夠建立在Solr的,只是考慮到:

  1. 您可以在SQL中使用括號像
  2. UNION:剛或兩個條件X或Y
  3. 減:剛加盟,且不兩個條件:X和NOTŸ
  4. 記得把所有那些FQ內,使用對於q
  5. 注意與「不是X」,Solr中有時你一點點^ h ack使其正常工作,請參閱here for examples。可能取決於Solr的版本
0

因此,對於你的例子:取在漫畫大全書籍的10和25年齡段,並假設三個字段BOOKNAME,BOOKTYPE和年齡,我將做到以下幾點: -

q = bookType:漫畫bookType:影像作品& fq =年齡:[10至25]

主要查詢中的2個bookType子句之間沒有任何差異意味着OR。即帶來漫畫或電影作品。並且過濾器查詢中的年齡範圍即fq過濾出年齡在10到25之間的結果。