Как solr хранит несколько ссылок на один и тот же дочерний документ из разных родительских документов?

Согласно link, родительские дочерние документы хранятся как

child1,child2,parent

Означает ли это, что если у меня есть ссылки на child1 из parent1 и parent2, они будут дублироваться дважды или будут ссылаться на один и тот же документ child1?

Will it be 
child1(COPY1),child2,parent1    ///  child1(COPY2),parent2

OR 
child1(COPY1),parent1 ///// child1(COPY1),parent2

person Sumeet Sharma    schedule 02.01.2016    source источник


Ответы (1)


Немного поэкспериментировав с вложенными документами, я пришел к выводу, что когда дело доходит до обновления индекса, solr рассматривает родителя и всех его дочерних элементов как один атомарный документ. Этот документ идентифицируется идентификатором родителя. Нет такой вещи, как ссылка на ребенка. Ребенок является частью одного атомарного документа.

Это означает, что при индексировании двух вложенных документов:

curl http://localhost:8983/solr/demo/update?commitWithin=3000 -d '                                                                                                                                            
[{
  id : parent1,                                                                                                                                                             
  _childDocuments_ : [                                                                                                                                                                                        
    { id: child1},                                                                                                                                                                                                         
    { id: child2}                                                                                                                                                                                                         
  ]                                                                                                                                                                                                           
}, {
  id : parent2,                                                                                                                                                             
  _childDocuments_ : [                                                                                                                                                                                        
    { id: child1}                                                                                                                                                                                                        
  ]                                                                                                                                                                                                           
}]'

вы получите следующий индекс

child1,child2,parent1,child1,parent2

обновление индекса parent2-child1 не повлияет на parent1-child1.

person Molecular Man    schedule 03.01.2016
comment
о, это означает, что в приведенном выше случае child1 будет создан дважды ... не приведет ли это к большому дублированию? - person Sumeet Sharma; 04.01.2016
comment
@SumeetSharma, да, он будет создан дважды. Насчет дублирования - ну зависит от ваших данных. Если вы сохраните все поля, у вас, вероятно, будет некоторое дублирование. Если вы только индексируете данные, эффект дублирования не должен быть значительным (в любом случае, я даже не могу представить, как можно избежать дублирования при построении обратного индекса). - person Molecular Man; 04.01.2016
comment
последний вопрос, не повлияет ли такая структура на релевантность документа? например, если дочерний документ является чем-то, что появляется у многих родителей, было бы нормально, если бы его релевантность была ниже, если контекст является родительским поиском, но что, если я ищу только среди дочерних документов.. в этом случае релевантность не будет ошибочной уменьшенный? - person Sumeet Sharma; 05.01.2016
comment
@SumeetSharma, извини. Нет ответа на это - person Molecular Man; 05.01.2016