2016-11-28 1 views
1
DIH

Je veux créer une entité imbriquée avec l'aide 6.x DIH SOLRconfiguration emboîtée entité à l'aide dans SOLR

i lu Defining nested entities in Solr Data Import Handler

et JIRA https://issues.apache.org/jira/browse/SOLR-5147

ce que je l'ai fait

Schema.xml

<fields> 
<field name="variantList" type="string" indexed="true" stored="true" /> 
<field name="variantList.variants" type="string" multiValued="false" required="false"/> 
<field name="variantList.stockMinimum" type="int" multiValued="false" required="false"/> 
<field name="variantList.stockOnHand" type="int" multiValued="false" required="false"/> 
<field name="variantList.stockVariantId" type="long" multiValued="false" required="false"/> 
</fields> 

données-config.xml

<dataConfig> 
    <dataSource /> 
    <document> 
    <entity name="PARENT" rootEntity='true' query="*" > 
    <field column="ID" name="id" /> 
    <field column="BRAND_ID" name="brandId" /> 
    <field column="PRODUCT_ID" name="productId" /> 
    <field column="MERCHANT_PRODUCT_ID" name="merchantProductId" /> 
    <field column="MERCHANT_ID" name="merchantId" /> 
    <field column="SALES_REGION" name="salesRegion" /> 
    <field column="LOCAL_DIRECT_DELIVERY" name="localDirectDelivery" /> 
    <field column="NORMAL_SELLINGPRICE" name="normalSellingPrice" /> 
    <field column="NEW_PRODUCT" name="newProduct" /> 
    <field column="BEST_SELLER" name="bestSeller" /> 
    <field column="CATEGORY1_ID" name="category1Id" /> 
    <field column="CATEGORY2_ID" name="category2Id" /> 
    <field column="CATEGORY3_ID" name="category3Id" /> 
    <field column="CATEGORY4_ID" name="category4Id" /> 
    <field column="DISPLAY_IMAGE_PATH" name="displayImagePath" /> 
    <field column="MERCHANT_NAME" name="merchantName" /> 
    <field column="PRODUCT_NAME" name="productName" /> 
    <field column="CATEGORY1_NAME" name="category1Name" /> 
    <field column="CATEGORY2_NAME" name="category2Name" /> 
    <field column="CATEGORY3_NAME" name="category3Name" /> 
    <field column="CATEGORY4_NAME" name="category4Name" /> 





     <entity name="variantList" child="true" query="select VARIANT , STOCK_MINIMUM , STOCK_ONHAND , ID from SIF_MERCHANT_CATALOG_VARIANT 
                where MERCHANT_CATALOG_ID = '${PARENT.ID}'"> 
       <field column="VARIANT" name="variantList.variants_s" /> 
       <field column="STOCK_MINIMUM" name="variantList.stockMinimum" /> 
       <field column="STOCK_ONHAND" name="variantList.stockOnHand" /> 
       <field column="ID" name="variantList.stockVariantId" /> 
      </entity> 
    </entity> 
    </document> 
</dataConfig> 

résultat que je veux

<doc parent_1/> 
    <doc child_1/> 
    <doc child_1/> 
<doc parent_2/> 
    <doc child_1/> 

et ce que je reçois

<doc child_1/> 
<doc child_1/> 
<doc parent_1/> 
<doc child_2/> 
<doc parent_2/> 

et je vois les anwers de aheryan, elle doit être juste, je peux utiliser enfant = true

Ai-je raté quelque chose?

grâce

Répondre

1

L'enfant docs sont retournés ensemble avec docs parents si vous faites juste une question d'ordre général. Comme une liste à plat. Donc, c'est probablement ce que vous voyez. La manière la plus simple de vérifier si vous avez des documents imbriqués est de regarder la valeur du champ _root_, car la valeur sera la même pour tous les documents dans le bloc hiérarchique parent/enfant.

Vous pouvez également rechercher des documents parent uniquement et utiliser Child Document Transformer pour lister ses enfants.

+0

ooh merci! ce transformateur de document d'enfant me manque, merci! –

+0

et je l'ai trouvé, https://github.com/lucidworks/solrj-nested-docs –