在SOLR中使用DIH配置嵌套实体 [英] Configuration Nested Entity using DIH in SOLR
问题描述
我想使用SOLR 6.x用DIH创建嵌套实体
和吉拉 https://issues.apache.org/jira/browse/SOLR-5147
我做了
Schema.xml
< fields><字段名="variantList"类型="string"索引="true"存储="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><实体名称="PARENT" rootEntity ='true'查询="*">< 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"/><实体名称="variantList" child ="true"查询="select VARIANT,STOCK_MINIMUM,STOCK_ONHAND,来自SIF_MERCHANT_CATALOG_VARIANT的ID其中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_字段的值,因为父/子层次结构块中的所有文档的值都相同.
您还可以仅搜索父文档,并使用Defining nested entities in Solr Data Import Handler
and jira https://issues.apache.org/jira/browse/SOLR-5147
what i did
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>
result that i want
<doc parent_1/>
<doc child_1/>
<doc child_1/>
<doc parent_2/>
<doc child_1/>
and what i get
<doc child_1/>
<doc child_1/>
<doc parent_1/>
<doc child_2/>
<doc parent_2/>
and i see aheryan's anwers , it should be right , i can use child=true
am i miss something ?
thanks
The child docs are returned together with parent docs if you just do a general query. As a flat list. So, that's probably what you are seeing.
The easiest way to check whether you got nested documents is to look at the value of the _root_ field, as the value will be the same for all documents in the parent/child hierarchy block.
You could also search for parent documents only and use Child Document Transformer to list its children.
这篇关于在SOLR中使用DIH配置嵌套实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!