1

使用 Solr:5.5.3,Java 7。

我必须获取所有Item:Cap 和 Size_s:XL,带有方面:COLOR_s 和 SIZE_s。这里 Item 是 Parent Doc 的一部分, Size 是 Child doc 的一部分。我曾想过使用 BlockJoin,但我无法理解如何同时查询父母和孩子。

将不胜感激任何帮助和指导。谢谢。

<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>

编辑: type_s 标识文档,所以任何查询也应该包含这个字段。

4

1 回答 1

1

尝试以下查询:

q={!parent which="Item:Cap"}Size_s:XL&facet.field=SIZE_s&facet.field=COLOR_s&facet=on

这应该为您提供所需的文件。

我使用了Solr Block Join Parser Documentationyonik 的 Solr Nested Objects Tutorial作为参考。

于 2016-11-04T12:17:19.377 回答