Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带字段标签关系的Solr嵌套文档:单个元素未存储在数组中_Solr_Nested Documents - Fatal编程技术网

带字段标签关系的Solr嵌套文档:单个元素未存储在数组中

带字段标签关系的Solr嵌套文档:单个元素未存储在数组中,solr,nested-documents,Solr,Nested Documents,在为数据编制索引时,我发现一些嵌套文档没有正确存储。我运行Solr8.3并将标记的关系用作 资料 每当根实体Parent具有任意数量的子实体时,我生成以下PHP数组: [ ‘id’=>‘b14ac9a0-e255-468b-a673-e125fd73d6f2’, “实体类型”=>“父项”, “title_t”=>“Andrea Cook”, “儿童”=>[ 0 => [ “id”=>“ce10380c-8006-4945-9078-296116ad5ab7”, “实体类型”=>“子实体”, “t

在为数据编制索引时,我发现一些嵌套文档没有正确存储。我运行Solr8.3并将标记的关系用作

资料 每当根实体
Parent
具有任意数量的
子实体时,我生成以下PHP数组:

[
‘id’=>‘b14ac9a0-e255-468b-a673-e125fd73d6f2’,
“实体类型”=>“父项”,
“title_t”=>“Andrea Cook”,
“儿童”=>[
0 => [
“id”=>“ce10380c-8006-4945-9078-296116ad5ab7”,
“实体类型”=>“子实体”,
“title_t”=>“Jordan Gibson”,
],
1 => [
“id”=>“0c191119-fae9-452e-aca2-b724a381f939”,
“实体类型”=>“子实体”,
“title\u t”=>“Jane Gordon”,
],
]
]
然后将其编码为以下JSON对象:

{
  "id": "b14ac9a0-e255-468b-a673-e125fd73d6f2",
  "entity_type": "parent",
  "title_t": "Andrea Cook",
  "children": [
    {
      "id": "ce10380c-8006-4945-9078-296116ad5ab7",
      "entity_type": "child",
      "title_t": "Jordan Gibson"
    },
    {
      "id": "0c191119-fae9-452e-aca2-b724a381f939",
      "entity_type": "child",
      "title_t": "Jane Gordon"
    }
  ]
}
这正是solr查询返回的结果(加上自动生成的值
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

问题 每当父级<代码>只有一个子级<代码>时,它们将作为solr中的对象结束,而不是包含单个对象的数组

预期搜索结果 真实搜索结果 断言 我已经确保php数组和JSON对象的格式正确,直到它们被传递到HTTP客户端为止

我已确保
子数组的数组键已编号并从0开始

问题 这是预期的行为吗

我是否必须为标记的关系创建一个
(即创建一个多值
子字段)?如果是的话,我会怎么做?我还没有找到任何解释

如何在搜索结果中始终为
子对象
获取一个数组,以便在迭代之前不必检查数据



我终于想到,我用PHP编程的数组操作(
array\u map
array\u merge
,…)正在创建具有奇怪索引的数组


为了解决这个问题,我必须调用
array\u value
,这将创建原始的零索引数组

我终于想到,我用PHP编程的数组操作(
array\u map
array\u merge
,…)正在创建具有奇怪索引的数组

为了解决这个问题,我必须调用
array\u value
,这将创建原始的零索引数组

{
  "id": "b14ac9a0-e255-468b-a673-e125fd73d6f2",
  "entity_type": "parent",
  "title_t": "Andrea Cook",
  "children": [
    {
      "id": "ce10380c-8006-4945-9078-296116ad5ab7",
      "entity_type": "child",
      "title_t": "Jordan Gibson"
    }
  ]
}
{
  "id": "b14ac9a0-e255-468b-a673-e125fd73d6f2",
  "entity_type": "parent",
  "title_t": "Andrea Cook",
  "children": {
    "id": "ce10380c-8006-4945-9078-296116ad5ab7",
    "entity_type": "child",
    "title_t": "Jordan Gibson"
  }
}