[ 
https://issues.apache.org/jira/browse/SOLR-12361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16505685#comment-16505685
 ] 

David Smiley commented on SOLR-12361:
-------------------------------------

I took your PR and ran with it a bit further; patch attached.  I had a stupid 
bug that took some time to debug so I wasn't ready till now.  I'm running tests 
but so far so good.

* Moved/added javadocs to SolrDocumentBase instead of subclass impls RE child 
docs.  I added a bit more info to them and made getChildDocumentCount 
deprecated.
* IngoreLargeDocumentProcessorFactory: ensured the value side of estimate(map) 
uses the recursive estimate() instead of the non-recursive primitiveEstimate().

AddUpdateCommand:
* pending nocommit that getLuceneDocument(inPlaceUpdate) is in fact always == 
isInPlaceUpdate() so this parameter is not needed and I think we can get rid of 
this overloaded variant.
* rename: getLuceneDocsIfNested  (to balance with getLuceneDocument).  Added 
javadocs.
* this method now returns Iterable<Document> and null if it turns out there is 
no nesting.  This solves some awkwardness in exposing SolrInputDocument type to 
the UpdateHandler which we don't want.
* rename: recUnwrap... to flatten
* moved isUsableForChildDocs check to getLuceneDocsIfNested where (to me) it 
seems nicer)

DirectUpdateHandler2:
* updateDocOrDocValues now has a simpler method contract; it's caller doesn't 
need to pass the "updateTerm" as it did originally, and improved from the last 
patch we return void not the idTerm.  doNormalUpdate had "cmd.updateTerm" 
(signature dedupe) logic that needed the idTerm & updateTerm which was why 
earlier I thought to return it but after some examination I think it's better 
if this logic was absorbed into updateDocOrDocValues.  I inlined 
updateDocument() into updateDocOrDocValues -- ultimately trying to make the 
code path and scope of idTerm/updateTerm more clear and I'm pretty happy with 
it.   Note "inline" is a verb used in coding (and can be found in IDE's for 
example); you earlier mistook my suggestion as a suggestion to rename a method.

Looking again at SolrTestCaseJ4.compareSolrInputDocument... maybe this logic 
ought to go on SolrInputDocument or better SolrDocumentBase as equals()?  If it 
were moved there, you wouldn't have even needed to make the change you did, and 
thus it'd be simpler and more obvious -- why should one have to know 
SolrTestCaseJ4.compareSolrInputDocument exists.  Heck, I can argue that 
SolrDocumentBase doesn't meet the contract of the Map it implements since a 
Map's equals() demands it actually works!  (hashcode too)

> Change _childDocuments to Map
> -----------------------------
>
>                 Key: SOLR-12361
>                 URL: https://issues.apache.org/jira/browse/SOLR-12361
>             Project: Solr
>          Issue Type: Sub-task
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: mosh
>            Priority: Major
>         Attachments: SOLR-12361.patch, SOLR-12361.patch, SOLR-12361.patch
>
>          Time Spent: 10h
>  Remaining Estimate: 0h
>
> During the discussion on SOLR-12298, there was a proposal to change 
> _childDocuments in SolrDocumentBase to a Map, to incorporate the relationship 
> between the parent and its child documents.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to