嵌套查询并检索子过滤器的父属性

时间:2015-09-15 12:57:44

标签: solr nested-query solr5

我正在经历Yonik的blog。 我正在使用solr 5.3.0,我有一个我想要解决的场景。 任何帮助将不胜感激。

概括Yonik的例子:

旧文件:

{
  product_name : "Awesome T-Shirt",
  category : "Clothing",
  color : [ "Red", "Blue"],
  size : [ "L", "M", "XL" ]
}

父:

{
  product_name : "Awesome T-Shirt",
  category : "Clothing",
}

嵌套儿童:

{
  color : "Red",
  size : "L",
  quantity: 2
}
{
  color : "Blue",
  size : "M",
  quantity: 3
}
{
  color : "Blue",
  size : "L",
  quantity: 0
}
{
  color : "Red",
  size : "L",
  quantity: 0
}
{
  color : "Red",
  size : "XL",
  quantity: 1
}

计算一些场景: 1)如果我把颜色过滤器:红色和尺寸:L我只得到儿童文件。是否可以在响应中获取父字段(因为我有多个颜色的产品:红色和大小:L)。

2)如果我搜索颜色:红色和数量大于0,我会得到多个文件,而这个搜索只是为了检查红色项目是否可用。虽然分组是一种解决方法,但还有其他方法。

2 个答案:

答案 0 :(得分:4)

如果您想parent documents child documents,请执行此操作:

/select?q=id:<parent id>
&fq=type:<parent type>
&fl=*,[child parentFilter="type:<parent type>" limit=10]

它会返回这样的结构:

{
"type":"<parent type>",
....
"_childDocuments_":[{
<doc>..</doc>
...
<doc>..</doc>
}]
}

子文档计数受limit=10限制,您当然可以更改,但默认值为10 :)

答案 1 :(得分:0)

我认为Solr的块连接解析器可以满足您的需求:

Block join