sio*_*iom 4 java solr solrcloud
目前,我按照此处所述评估 Block Join Children Query Parser 。
因此,我创建了以下集合:
curl "http://localhost:8983/solr/admin/collections?action=CREATE&name=nestedPerson&numShards=6"`
Run Code Online (Sandbox Code Playgroud)
然后我插入了这两个文件:
curl http://localhost:8983/solr/nestedPerson/update?commitWithin=3000 -d '<add>
<doc>
<field name="id">p1</field>
<field name="deceased">false</field>
<doc>
<field name="id">c1</field>
<field name="firstName">Bob</field>
</doc>
</doc>
<doc>
<field name="id">p2</field>
<field name="deceased">true</field>
<doc>
<field name="id">c2</field>
<field name="firstName">Max</field>
</doc>
</doc>
</add>'
Run Code Online (Sandbox Code Playgroud)
现在我发出这个查询:
{!child of="id:p1"}firstName:Bob
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会导致此错误:
"msg": "Parent query yields document which is not matched by parents filter, docID=0",
Run Code Online (Sandbox Code Playgroud)
父查询(我猜是该部分id:p1的意思)如何生成与过滤器不匹配的文档?
看看您在此处再次引用的 Solr Wiki 。请注意以下事项:
The syntax for this parser is: q={!child of=<allParents>}<someParents>. The parameter allParents is a filter that matches only parent documents
在您的示例中,查询是{!child of="id:p1"}firstName:Bob. 该场id在使用<allParents>,但id被包含在双方父母和子女的文件。
您需要引入一个只有父文档才有的字段,例如<field name="content_type">parentDocument</field>来自 wiki。一旦所有父文档(并且只有父文档)具有此字段,您就可以将查询提交为:
q={!parent which="content_type:parentDocument"}firstName:Bob
这将匹配子文档firstName:Bob并返回其父文档。以类似的方式,用于q={!child of=<allParents>}<someParents>匹配父文档并返回其子文档。
| 归档时间: |
|
| 查看次数: |
4671 次 |
| 最近记录: |