1

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

我想知道以下情况是否可能。
例如,我们有以下形式的文档:
doc1:
    field1:123
    field2:A
    field3:456

doc2:
    field1:123
    field2:B
    field3:789

doc3:
    field1:23456
    field2:A
    field3:264

我们需要检索字段 field2 等于 B 的所有文档,并且没有其他具有相同字段 field1 值的文档包含字段 field2 的值为 A。

在 SQL 中,这可以通过“not in”操作来完成:
select * from doc where field2 = 'B' and field1 not in (select field1 from doc where field2 = 'A')

连接运算符等效于 SQL in 运算符。

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

谢谢

4

1 回答 1

0

为此,您需要使用嵌套查询。这是相同的问题和答案:

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

这是您的示例的查询:

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

它将返回 field2 没有“A”值的所有文档。

您也可以添加到 q 另一个条件(如果您只需要“B”值):

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

它将返回 field2 的所有具有“B”值的文档。

于 2014-11-28T15:28:58.550 回答