【发布时间】:2022-08-19 00:44:54
【问题描述】:
我正在尝试使用非匿名嵌套类创建索引。我想要的 solr 输出是:
\"responseHeader\":{
\"status\":0,
\"QTime\":8,
\"params\":{
\"q\":\"discriminator:project\",
\"indent\":\"true\",
\"fl\":\"*,[child]\",
\"q.op\":\"OR\",
\"_\":\"1660714908720\"}},
\"response\":{\"numFound\":1003,\"start\":0,\"numFoundExact\":true,\"docs\":[
{\"name\":\"Project 1\",
\"id\":\"315500\",
\"discriminator\":\"project\",
\"_version_\":1741444763087798272,
\"publicContacts\":[
{
\"name\":\"Gurney Halleck\",
\"id\":\"315520\",
\"discriminator\":\"publicContact\",
\"_version_\":1741444763087798272},
{
\"name\":\"Thufir Hawat\",
\"id\":\"315530\",
\"discriminator\":\"publicContact\",
\"_version_\":1741444763087798272}]},
我已阅读并关注:https://solr.apache.org/guide/8_0/indexing-nested-documents.html 和https://solr.apache.org/guide/8_11/indexing-nested-documents.html#indexing-nested-documents
如果我添加 /just/
<field name=\"_root_\" type=\"string\" indexed=\"true\" stored=\"false\" docValues=\"false\" />
在我的 schema.xml 中,我可以执行查询并获得返回匿名嵌套文档的结果子文档
\"responseHeader\":{
\"status\":0,
\"QTime\":8,
\"params\":{
\"q\":\"discriminator:project\",
\"indent\":\"true\",
\"fl\":\"*,[child]\",
\"q.op\":\"OR\",
\"_\":\"1660714908720\"}},
\"response\":{\"numFound\":1003,\"start\":0,\"numFoundExact\":true,\"docs\":[
\"name\":\"Project 1\",
\"id\":\"315500\",
\"discriminator\":\"project\",
\"_version_\":1741444763087798272,
\"_childDocuments_\":[
{
\"name\":\"Gurney Halleck\",
\"id\":\"315520\",
\"discriminator\":\"publicContact\",
\"_version_\":1741444763087798272},
{
\"name\":\"Thufir Hawat\",
\"id\":\"315530\",
\"discriminator\":\"publicContact\",
\"_version_\":1741444763087798272}]
},
但是,如果我添加
<fieldType name=\"_nest_path_\" class=\"solr.NestPathField\" />
<field name=\"_nest_path_\" type=\"_nest_path_\" stored=\"true\" />
根本没有创建嵌套关系(甚至没有创建匿名 childDocuments!),但是我的下一个文档被放入索引中。
我正在使用 DIH 来索引文档:
<entity transformer=\"RegexTransformer\" name=\"project\" query=\"select * from project\">
<!-- universal fields -->
<field column=\"discriminator\"/>
<field column=\"id\"/>
<field column=\"name\"/>
<entity child=\"true\" name=\"publicContacts\" query=\"select * from project_public_contacts where project_id=\'${project.id}\'\">
<field column=\"discriminator\"/>
<field column=\"id\"/>
<field column=\"name\"/>
</entity>
</entity>
我究竟做错了什么?
标签: solr