Solr已从版本4实现了!join查询。
我想知道以下情况是否可行。
例如,我们有以下形式的文件:
doc1:
field1:123
field2:A
field3:456
doc2:
字段1:123
场2:乙
字段3:789
doc3的:
字段1:23456
场2:一个
字段3:264个
我们需要检索字段field2等于的所有文档 B并且没有包含相同字段field1值的其他文档 字段field2的值为A。
在SQL中,这可以通过“不在”操作来完成:
从文档中选择*
其中field2 ='B'且field1不在(从doc中选择field1)
field2 ='A')
join运算符相当于运算符中的SQL。
我们可以使用solr join或其他函数来实现我们的需求吗?
由于
答案 0 :(得分:0)
出于此目的,您需要使用nested query。这里有相同的问题和答案:
https://stackoverflow.com/a/27191274/4304116
以下是您的示例查询:
q=-_query_:"{!join from=doc_id to=id}field2:'A'"
它将返回所有不包含" A" field2的值。
此外,您可以添加到q另一个条件(如果您只需要" B"值):
q={!join from=doc_id to=id}field2:'B'"
它会返回所有文档' B' field2的值。