solr join用例(不是代替)

时间:2013-04-11 14:41:23

标签: solr

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或其他函数来实现我们的需求吗?

由于

1 个答案:

答案 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的值。