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

Eks Dev commented on SOLR-2701:
-------------------------------

@Erick, just go ahead and take it. 
I am not going to be working on this any time soon. At the moment I am using 
quck'n dirty patched trunk version (moving target anyways) with extended 
CommitCommand to pass Map around (sub-optimal approach? but does the work for 
now). 

Some thinking about it, maybe you find something useful: 
 
Take care, optimize and autoCommit do implicit commit (from user perspective, 
there is no explicit transaction to commit where we could pass Map parameters). 
This, as a consequence, requires Map<String, String> to be alive somewhere 
(DUH2 looks like the best place for it). Of course, one needs to expose some 
user interfaces that will enable map mutation and inquiry. This Map then 
becomes cached key-value pairs holder a user can change and solr offers 
guaranties to commit it on implicit/explicit commit and read it on 
reload/rollback 

Rollback and restart, e.g. what happens to this map after restart (core 
reload)? I would suggest populating it with committed values, on rollback as 
well.

As a summary: 
- One thing is low level mechanics, this is easy: all changes are local to 
DUH2, one Map<String, String> and passing this instance to all commit commands 
you see there. Of course, reloading it on index reload/rollback
- Much harder (at least for me): designing good user interface to maintain it, 
... explicit changes vie request handler (admin like operation)
... as parameter of the commit command (nice)
... somehow hooking into update chain elegantly (My primary use case! I keep 
track of the max timestamp in this map (actually in AtomicLong, just populating 
Map on commit) to control incremental updates, but my use case is dumb easy to 
support with patched CommitCommand as I have only *explicit commits* (this wold 
not work with e.g. autoCommit, you would need Map instance for it).   

e.g. Look at DIH, it uses internal counters and file system to persist it for 
this, that could be much better served by lucene commit guaranties...


On another note, keeping real-time (not committed values) track of min/max 
values for user defined fields would make sense for incremental update 
scenarios, I do not know if there is something in lucene/solr for it already, 
but this is another, but somehow related issue...  

Cheers, 
Eks 






                
> Expose IndexWriter.commit(Map<String,String> commitUserData) to solr 
> ---------------------------------------------------------------------
>
>                 Key: SOLR-2701
>                 URL: https://issues.apache.org/jira/browse/SOLR-2701
>             Project: Solr
>          Issue Type: New Feature
>          Components: update
>    Affects Versions: 4.0
>            Reporter: Eks Dev
>            Assignee: Erick Erickson
>            Priority: Minor
>              Labels: commit, update
>         Attachments: SOLR-2701.patch
>
>   Original Estimate: 8h
>  Remaining Estimate: 8h
>
> At the moment, there is no feature that enables associating user information 
> to the commit point.
>  
> Lucene supports this possibility and it should be exposed to solr as well, 
> probably via beforeCommit Listener (analogous to prepareCommit in Lucene).
> Most likely home for this Map to live is UpdateHandler.
> Example use case would be an atomic tracking of sequence numbers or 
> timestamps for incremental updates.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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

Reply via email to