两个文档之间的Solr连接查询

时间:2018-12-14 10:39:56

标签: solr

我的产品文档的“ sid”字段是销售文档的外键,而另一个销售文档的“ id”字段则是销售文档的主字段。如何获取与销售单据中具有“ sid”值的销售单据匹配的所有产品。

如何编写Solr联接查询?

示例: 在此之下具有solr核心名称“ test”,我们有以下数据。 “文档”:[       {         “ PPS_productID”:“ CB_9457”,         “ documentType”:“销售”,         “ name”:“ A1”

  },
  {
    "documentType": "Products",
    "PPS_productID": "PPS3-639",
    "PPS_storeid": "CB_9457"
  },
  {
    "PPS_productID": "CB_9458",
    "documentType": "Sales",
    "name":"A2"
  },
  {
    "documentType": "Products",
    "PPS_productID": "PPS3-640",
    "PPS_storeid": "CB_9458"
  }
  {
    "PPS_productID": "CB_9459",
    "documentType": "Sales"
    "name":"A3"
  },
  {
    "documentType": "Products",
    "PPS_productID": "PPS3-640",
    "PPS_storeid": "CB_9460"
  }

]

如何从联接查询中获得以下响应。 “文档”:[       {         “ documentType”:“产品”,         “ PPS_productID”:“ PPS3-639”,         “ PPS_storeid”:“ CB_9457”,         “名称”:“ A1”       },       {         “ documentType”:“产品”,         “ PPS_productID”:“ PPS3-640”,         “ PPS_storeid”:“ CB_9458”,         “名称”:“ A2”       } ]

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式执行此操作。我们需要两个单独的实体(例如表或集合)来运行联接查询,而我们没有单独的实体。我想说您的收藏更方便。 解决方法-假设销售ID为1234,类型为字段以分隔文档。

  1. q=*:*&fq=sid:1234 OR id:1234 在这种情况下,您将获得所有合格的文件作为正常结果,并且必须将它们分开。

  2. q=*:*&fq=sid:1234 OR id:1234&group=true&group.field=type 在这种情况下,您将获得具有类型值的组。

我建议您选择第一个。