Вложенный документ Solr с отношением, помеченным полем: отдельные элементы не хранятся в массивах - PullRequest
1 голос
/ 31 января 2020

При индексации моих данных я обнаружил, что некоторые вложенные документы хранятся неправильно. Я запускаю Solr 8.3 и использую помеченные отношения как , описанные в документах .

Данные

Всякий раз, когда root сущность, Parent, имеет любое количество Child сущностей, я генерирую следующий массив PHP:

[
  'id' => 'b14ac9a0-e255-468b-a673-e125fd73d6f2',
  'entity_type' => 'parent',
  'title_t' => 'Andrea Cook',
  'children' => [
    0 => [
      'id' => 'ce10380c-8006-4945-9078-296116ad5ab7',
      'entity_type' => 'child',
      'title_t' => 'Jordan Gibson',
    ],
    1 => [
      'id' => '0c191119-fae9-452e-aca2-b724a381f939',
      'entity_type' => 'child',
      'title_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 (плюс автоматически сгенерированные значения __root__, __nest_path__ и т. Д. c).

Проблема

Всякий раз, когда Parent имеет только один Child, они заканчиваются как объект в solr вместо массива, содержащего один объект.

Ожидаемый результат поиска

{
  "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"
  }
}

Утверждения

Я убедился, что массив php и JSON правильно сформированы до момента их передачи клиенту HTTP.

У меня есть убедитесь, что ключи массива для children массивов пронумерованы и начинаются с 0.

Вопросы

Это ожидаемое haviour?

Нужно ли создавать <fieldType/> для помеченных отношений (т. е. создавать многозначное поле children)? Если да, то как бы я это сделал? Я не нашел никакого объяснения.

Что я могу сделать, чтобы всегда получать массив для children в моих результатах поиска, чтобы мне не приходилось проверять данные перед их повторением?


uuidgenerator. net, uinames.com

...