[
https://issues.apache.org/jira/browse/SOLR-139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12516598
]
Ryan McKinley commented on SOLR-139:
------------------------------------
>
> So I think that we need a modifyDocument() call on updateHandler, and perhaps
> a ModifyUpdateCommand to go along with it.
>
> I'm not sure yet what this means for request processors. Perhaps another
> method that handles the reloaded storedFields?
>
Another option might be some sort of transaction or locking model. Could it
block other requests while there is an open transaction/lock?
Consider the case where we need the same atomic protection for fields loaded
from non-stored fields loaded from a SQL database. In this case, it may be
nice to have locking/blocking happen at the processor level.
I don't know synchronized well enough to know if this works or is a bad idea,
but what about something like:
class ModifyExistingDocumentProcessor {
void processAdd(AddUpdateCommand cmd) {
String id = cmd.getIndexedId(schema);
synchronized( updateHandler ) {
SolrDocument existing = updateHandler.loadStoredFields( id );
myCustomHelper.loadTagsFromDB( existing );
cmd.solrDoc = ModifyDocumentUtils.modifyDocument( ... );
// This eventually calls: updateHandler.addDoc(cmd);
super.processAdd(cmd);
}
}
}
This type of approach would need to make sure everyone modifying fields was
locking on the same updateHandler.
- - - -
I'm not against adding a ModifyUpdateCommand, I just like having the modify
logic sit outside the UpdateHandler.
> Support updateable/modifiable documents
> ---------------------------------------
>
> Key: SOLR-139
> URL: https://issues.apache.org/jira/browse/SOLR-139
> Project: Solr
> Issue Type: Improvement
> Components: update
> Reporter: Ryan McKinley
> Assignee: Ryan McKinley
> Attachments: getStoredFields.patch, getStoredFields.patch,
> getStoredFields.patch, getStoredFields.patch, getStoredFields.patch,
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch,
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch,
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch,
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch,
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch,
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-ModifyInputDocuments.patch,
> SOLR-139-ModifyInputDocuments.patch, SOLR-139-XmlUpdater.patch,
> SOLR-269+139-ModifiableDocumentUpdateProcessor.patch
>
>
> It would be nice to be able to update some fields on a document without
> having to insert the entire document.
> Given the way lucene is structured, (for now) one can only modify stored
> fields.
> While we are at it, we can support incrementing an existing value - I think
> this only makes sense for numbers.
> for background, see:
> http://www.nabble.com/loading-many-documents-by-ID-tf3145666.html#a8722293
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.