2017-06-14 76 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之间的结果。