我的产品文档的“ 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” } ]
答案 0 :(得分:0)
您可以通过两种方式执行此操作。我们需要两个单独的实体(例如表或集合)来运行联接查询,而我们没有单独的实体。我想说您的收藏更方便。 解决方法-假设销售ID为1234,类型为字段以分隔文档。
q=*:*&fq=sid:1234 OR id:1234
在这种情况下,您将获得所有合格的文件作为正常结果,并且必须将它们分开。
q=*:*&fq=sid:1234 OR id:1234&group=true&group.field=type
在这种情况下,您将获得具有类型值的组。
我建议您选择第一个。