Reputation: 188
Using Solr:5.5.3, Java 7.
I have to fetch all Item:Cap and Size_s:XL, With facets: COLOR_s and SIZE_s. Here Item is part of Parent Doc and Size is part of Child doc. I have thought of using BlockJoin but i am not able to understand how to Query both parent and child at the same time.
Would appreciate any help and guidance. Thanks.
<add>
<doc>
<field name="id">1</field>
<field name="type_s">forSaleItem</field>
<field name="item">Shirt</field>
<doc>
<field name="id">11</field>
<field name="type_s">itemAttrDoc</field>
<field name="COLOR_s">Red</field>
<field name="SIZE_s">XL</field>
<field name="PRICE_i">6</field>
</doc>
<doc>
<field name="type_s">itemAttrDoc</field>
<field name="id">12</field>
<field name="COLOR_s">Red</field>
<field name="SIZE_s">XL</field>
<field name="PRICE_i">7</field>
</doc>
<doc>
<field name="type_s">itemAttrDoc</field>
<field name="id">13</field>
<field name="COLOR_s">Blue</field>
<field name="SIZE_s">L</field>
<field name="PRICE_i">5</field>
</doc>
</doc>
<doc>
<field name="id">2</field>
<field name="type_s">forSaleItem</field>
<field name="item">Cap</field>
<doc>
<field name="type_s">itemAttrDoc</field>
<field name="id">21</field>
<field name="COLOR_s">Blue</field>
<field name="SIZE_s">XL</field>
<field name="PRICE_i">6</field>
</doc>
<doc>
<field name="type_s">itemAttrDoc</field>
<field name="id">22</field>
<field name="COLOR_s">Blue</field>
<field name="SIZE_s">XL</field>
<field name="PRICE_i">7</field>
</doc>
<doc>
<field name="type_s">itemAttrDoc</field>
<field name="id">23</field>
<field name="COLOR_s">Red</field>
<field name="SIZE_s">L</field>
<field name="PRICE_i">5</field>
</doc>
</doc>
<doc>
<field name="id">3</field>
<field name="type_s">NotforSaleItem</field>
<field name="item">trouser</field>
<doc>
<field name="type_s">itemAttrDoc</field>
<field name="id">21</field>
<field name="COLOR_s">Blue</field>
<field name="SIZE_s">XL</field>
<field name="PRICE_i">6</field>
</doc>
<doc>
<field name="type_s">itemAttrDoc</field>
<field name="id">22</field>
<field name="COLOR_s">Blue</field>
<field name="SIZE_s">XL</field>
<field name="PRICE_i">7</field>
</doc>
<doc>
<field name="type_s">itemAttrDoc</field>
<field name="id">23</field>
<field name="COLOR_s">Red</field>
<field name="SIZE_s">L</field>
<field name="PRICE_i">5</field>
</doc>
</doc>
</add>
Edit: type_s identifies the docs, So any query should also contain this field.
Upvotes: 1
Views: 682
Reputation: 1595
Try the following query:
q={!parent which="Item:Cap"}Size_s:XL&facet.field=SIZE_s&facet.field=COLOR_s&facet=on
This should give you the documents that you need.
I've used Solr Block Join Parser Documentation and yonik's Solr Nested Objects Tutorial for reference.
Upvotes: 1