【问题标题】:Solr join query between two document两个文档之间的 Solr 连接查询
【发布时间】:2018-12-14 10:39:55
【问题描述】:

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

solr join 查询怎么写?

示例: 在此下具有 solr 核心名称“test”,我们有以下数据。 “文档”:[ { "PPS_productID": "CB_9457", "documentType": "销售", “名称”:“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” } ]

【问题讨论】:

  • 你需要解释更多。这些所有文档是在同一个集合中还是在不同的集合中?如果所有都在一个集合中,您如何将它们分开?
  • 这些都在具有不同文档类型的单核下。产品是一个文件,销售是另一个文件。
  • 您是否有示例说明这些文档的外观以及您想要实现的目标?很难说出您希望您的查询从您的问题中返回什么。
  • 这里的“test”是collection,我们用documentType来分隔。一个是产品,另一个是销售
  • 您无法在常规 Solr 连接中从连接的两侧获取数据。如果这是必要的,您将不得不查看流式表达式 - 这是 Solr 的一个相当新的功能。

标签: solr


【解决方案1】:

您可以通过两种方式做到这一点。我们需要两个单独的实体,例如表或集合来运行连接查询,并且我们没有单独的实体。我会说你的收藏更方便。 解决方案 - 假设销售 id 为 1234,类型为分隔文档的字段。

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

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

我建议使用第一个选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    相关资源
    最近更新 更多