如何在我的 Solr schema.xml 中表示 Child 文档?
How do I represent a Child Document in my Solr schema.xml?
我正在尝试实现这样的文档层次结构,其中 parent 是 'Bundle',children 是 'Products':
Bundle:
id
imageUrl
Products:
[
id:2
type:"t-shirt"
sizes:[S,M,L]
colors:[blue],
id:3
type:"hoodie"
sizes:[M]
colors:[red]
]
这样我就可以支持像 "M blue products where imageUrl=xyz" 这样的查询。
我已经像这样配置了 managed-schema.xml:
<field name="_root_" type="string" docValues="false" indexed="true" stored="false"/>
<field name="image_url" type="text_en" uninvertible="false" indexed="false" stored="true"/>
<field name="id" type="string" multiValued="false" required="true" stored="true"/>
<fieldType name="_nest_path_" class="solr.NestPathField"/>
<field name="_product_" type="_nest_path_">
<field name="id" type="string" multiValued="false" required="true" stored="true"/>
<field name="type" type="string" indexed="true" stored="true"/>
<field name="colors" type="strings" multiValued="true" indexed="true" stored="true"/>
<field name="sizes" type="strings" multiValued="true" ndexed="true" stored="true"/>
</field>
我正在为 Java 中的文档编制索引,如下所示:
SolrInputDocument parent = new SolrInputDocument();
parent.addField("id", bundle.id);
parent.addField("imageUrl", bundle.imageUrl);
for (Product product : bundle.products) {
SolrInputDocument child = new SolrInputDocument();
child.addField("type", product.type);
child.addField("colors", product.colors);
parent.addChildDocument(child);
}
但是当我尝试编制索引时,我收到 "org.apache.solr.common.SolrException: ERROR: [doc=347] multiple values encountered for non multiValued field colors: [Black, Deep Royal, Navy]"。
我的 children 文件结构是否正确?
首先,您在尺寸字段中有一个错误。在那里你写了索引而不是索引。可能是您用来存储颜色的 fieldType "strings" 未在模式文件中声明为多值字段?
我正在尝试实现这样的文档层次结构,其中 parent 是 'Bundle',children 是 'Products':
Bundle:
id
imageUrl
Products:
[
id:2
type:"t-shirt"
sizes:[S,M,L]
colors:[blue],
id:3
type:"hoodie"
sizes:[M]
colors:[red]
]
这样我就可以支持像 "M blue products where imageUrl=xyz" 这样的查询。
我已经像这样配置了 managed-schema.xml:
<field name="_root_" type="string" docValues="false" indexed="true" stored="false"/>
<field name="image_url" type="text_en" uninvertible="false" indexed="false" stored="true"/>
<field name="id" type="string" multiValued="false" required="true" stored="true"/>
<fieldType name="_nest_path_" class="solr.NestPathField"/>
<field name="_product_" type="_nest_path_">
<field name="id" type="string" multiValued="false" required="true" stored="true"/>
<field name="type" type="string" indexed="true" stored="true"/>
<field name="colors" type="strings" multiValued="true" indexed="true" stored="true"/>
<field name="sizes" type="strings" multiValued="true" ndexed="true" stored="true"/>
</field>
我正在为 Java 中的文档编制索引,如下所示:
SolrInputDocument parent = new SolrInputDocument();
parent.addField("id", bundle.id);
parent.addField("imageUrl", bundle.imageUrl);
for (Product product : bundle.products) {
SolrInputDocument child = new SolrInputDocument();
child.addField("type", product.type);
child.addField("colors", product.colors);
parent.addChildDocument(child);
}
但是当我尝试编制索引时,我收到 "org.apache.solr.common.SolrException: ERROR: [doc=347] multiple values encountered for non multiValued field colors: [Black, Deep Royal, Navy]"。
我的 children 文件结构是否正确?
首先,您在尺寸字段中有一个错误。在那里你写了索引而不是索引。可能是您用来存储颜色的 fieldType "strings" 未在模式文件中声明为多值字段?