Solr连接用例(不是in而是in)



Solr从版本4开始实现了!join查询。

我想知道以下情况是否可行。
例如,我们有以下形式的文档:
Doc1:
      field2:A
   field:456

Doc2:
,,, field1:123
,,, field2: B
   field:789

doc3:
,,, field1:23456
,,, field2:
,,, field3:264

我们需要检索字段field2等于的所有文档B和不包含相同字段field1值的其他文档值为a的字段field2

在SQL中,这可以通过操作"not In "来完成:
select * from docwhere field2 = 'B' and field1不在(select field1 from doc wherefield2 = 'A')

连接操作符相当于SQL的in操作符。

我们可以使用solr join或其他函数来实现我们的需求吗?

谢谢

为此需要使用嵌套查询。下面是同样的问题和答案:

https://stackoverflow.com/a/27191274/4304116

这里是你的例子的查询:

q=-_query_:"{!join from=doc_id to=id}field2:'A'"

它将返回所有字段2中没有"A"值的文档。

你也可以给q添加另一个条件(如果你只需要"B"值):

q={!join from=doc_id to=id}field2:'B'"

它将返回字段d2中所有值为'B'的文档。

最新更新