Github user moshebla commented on a diff in the pull request: https://github.com/apache/lucene-solr/pull/455#discussion_r223355767 --- Diff: solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java --- @@ -461,5 +466,33 @@ private static boolean isChildDoc(Object obj) { } return objValues.iterator().next() instanceof SolrDocumentBase; } + + private void removeObj(Collection original, Object toRemove, String fieldName) { + if(isChildDoc(toRemove)) { + removeChildDoc(original, (SolrInputDocument) toRemove); + } else { + original.remove(getNativeFieldValue(fieldName, toRemove)); + } + } + + private static void removeChildDoc(Collection original, SolrInputDocument docToRemove) { + for(SolrInputDocument doc: (Collection<SolrInputDocument>) original) { + if(isDerivedFromDoc(doc, docToRemove)) { + original.remove(doc); + return; + } + } + } + + private static boolean isDerivedFromDoc(SolrInputDocument fullDoc, SolrInputDocument subDoc) { + for(SolrInputField subSif: subDoc) { + String fieldName = subSif.getName(); + if(!fullDoc.containsKey(fieldName)) return false; + Collection<Object> fieldValues = subDoc.getFieldValues(fieldName); --- End diff -- fieldValues was supposed to be: `fullDoc.getFieldValues(fieldName);`
--- --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org