При индексации моих данных я обнаружил, что некоторые вложенные документы хранятся неправильно. Я запускаю 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