2016-11-04 143 views
0

使用Solr的:5.5.3,Java 7中Solr的:查詢Parent和Child文檔

我已經獲取所有項目:蓋子和Size_s:XL,藉助方面:COLOR_s和SIZE_s。 此項目是父文件的一部分,大小是子文檔的一部分。我曾想過使用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標識的文檔,那麼任何的查詢也應包含這一領域。

+0

您可能會在[Solr Block Join Parser Documentation]中找到您的問題的答案(https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-BlockJoinQueryParsers) –

回答

0

嘗試以下查詢:

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

這應該給你,你需要的文件。

我用Solr Block Join Parser Documentationyonik's Solr Nested Objects Tutorial作爲參考。

+0

謝謝很多爲您的迴應。 相信它與否我已經寫了確切的查詢,你提供了,我指的是相同的鏈接引用。 現在,我必須按項目查詢父文檔,也** ** type_s **,道歉不要在我的問題中提及它,這是我現在要解決的問題。 我可能會有更多字段的父**和**子文檔需要匹配。 正如我所看到的,我可以重複您提到的查詢。嘗試它。 http://stackoverflow.com/questions/35003195/solr-block-join-parent-query-with-many-children-constraints –