在 SOLR 中使用 DIH 配置嵌套实体

Configuration Nested Entity using DIH in SOLR

我想使用 SOLR 使用 DIH 创建嵌套实体 6.x

我读了 Defining nested entities in Solr Data Import Handler

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

我做了什么

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>

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

我想要的结果

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

以及我得到的

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

我看到了 aheryan 的答案,应该是对的,我可以使用 child=true

我错过了什么吗?

谢谢

如果您只是进行一般查询,则子文档会与父文档一起返回。作为一个平面列表。所以,这可能就是您所看到的。

检查是否有嵌套文档的最简单方法是查看 _root_ 字段的值,因为该值对于 parent/child 层次结构块中的所有文档都是相同的。

您也可以仅搜索父文档并使用 Child Document Transformer 列出其子文档。