在 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 列出其子文档。
我想使用 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 列出其子文档。