2016-11-19 12 views
1

マイデータインポートハンドラ文書は以下の通りです:私は子供を設定するとどのようにデータインポートハンドラを使用してSolrでのネストされたデータを挿入すると、スキーマ

<document> 
    <entity name="product" query="SELECT 
      id, 
      sku, 
      name, 
      image FROM products"> 
     <field column="id" name="id" /> 
     <field column="sku" name="sku" /> 
     <field column="name" name="name" /> 
     <field column="image" name="image" /> 
     <entity name="rates" child="true" query="select start_date, end_date, price from product_rates where product_id='${product.id}'"> 
      <field name="start_date" column="start_date" /> 
      <field name="end_date" column="end_date" /> 
      <field name="price" column="price" /> 
     </entity> 
    </entity> 
</document> 

=子データとの真の文書は、Solrのに挿入していません。私は子供のドキュメントを挿入するためにスキーマやsolrconfigの変更が必要ですか? 私はSolrの6.3を使用していますし、私のschema.xmlは以下の通りです:

<schema name="product" version="1.5"> 
     <field name="_version_" type="long" indexed="true" stored="true"/> 
     <field name="_root_" type="string" indexed="true" stored="false"/> 

     <!--PARENT DOC--> 
     <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
     <field name="sku" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
     <field name="name" type="text_general" indexed="false" stored="true" multiValued="false" /> 
     <field name="image" type="text_general" indexed="false" stored="true" multiValued="false" /> 

     <!--CHILD DOC--> 
     <field name="start_date" type="date" indexed="false" stored="true" multiValued="false" /> 
     <field name="end_date" type="date" indexed="true" stored="true" multiValued="false" /> 
     <field name="price" type="tdouble" indexed="true" stored="true" multiValued="false" /> 

     <uniqueKey>id</uniqueKey> 
     <defaultSearchField>id</defaultSearchField> 

     <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/> 
     <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> 
     <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/> 
     <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> 
     <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> 
     <fieldType name="string" class="solr.StrField" sortMissingLast="true" /> 
     <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/> 

     <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD" currencyConfig="currency.xml" /> 
</schema> 

答えて

0

エンティティプロセッサに「子= true」のパラメータを追加することにより。

ブロック結合クエリパーサーで検索するために、ネストされた子ドキュメントとも呼ばれるインデックス付きドキュメントブロックを有効にします。他のルートエンティティの下でのみ指定できます。これは、デフォルトの動作(フィールド値のマージ)から、子ドキュメントとしてネストされたドキュメントに切り替わります。注:parentは、クエリ時に親フィルタとして使用されるフィールドを追加する必要があります。

関連する問題