So I think I took the easiest option by creating an UpdateRequestProcessor implementation (I was unsure of the performance implications and object model of ScriptUpdateProcessor). The below DocumentCreationDetailsProcessorFactory class seems to achieve my aim of allowing me to sort my Solr Documents by a creation order (To an extent - I don't think it is exactly the commit order..), though the auto-increment/sequence/counter functionality is not continuous.
Solr Sort Parameter String: sort=created_time_stamp_l asc, created_processing_sequence_number_l asc, created_by_solr_thread_id_l asc, created_by_solr_core_name_s asc, created_by_solr_shard_id_s asc Any comments or feedback would be appreciated. //---------------------------------------------------------------- // UpdateRequestProcessor implementation //---------------------------------------------------------------- public class DocumentCreationDetailsProcessorFactory extends UpdateRequestProcessorFactory { private static final AtomicLong processingSequenceNumber = new AtomicLong(); @Override public UpdateRequestProcessor getInstance(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next) { return new DocumentCreationDetailsProcessor(req, rsp, next, processingSequenceNumber); } } class DocumentCreationDetailsProcessor extends UpdateRequestProcessor { private final SolrQueryRequest req; @SuppressWarnings("unused") private final SolrQueryResponse rsp; @SuppressWarnings("unused") private final UpdateRequestProcessor next; private final AtomicLong processingSequenceNumber; public DocumentCreationDetailsProcessor(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next, AtomicLong processingSequenceNumber ) { super(next); this.req = req; this.rsp = rsp; this.next = next; this.processingSequenceNumber = processingSequenceNumber; } @Override public void processAdd(AddUpdateCommand cmd) throws IOException { SolrInputDocument solrInputDocument = cmd.getSolrInputDocument(); solrInputDocument.addField("created_time_stamp_l", System.currentTimeMillis()); solrInputDocument.addField("created_processing_sequence_number_l", processingSequenceNumber.incrementAndGet()); String solrCoreName = null; String solrShardId = null; if (req != null && req.getCore() != null && req.getCore().getCoreDescriptor() != null ) { SolrCore solrCore = req.getCore(); CoreDescriptor coreDesc = null; CloudDescriptor cloudDesc = null; if ( solrCore != null ) { solrCoreName = solrCore.getName(); coreDesc = req.getCore().getCoreDescriptor(); if (coreDesc != null) { cloudDesc = coreDesc.getCloudDescriptor(); } if (cloudDesc != null) { solrShardId = cloudDesc.getShardId(); } } } solrInputDocument.addField("created_by_solr_thread_id_l", Thread.currentThread().getId()); solrInputDocument.addField("created_by_solr_core_name_s", solrCoreName); solrInputDocument.addField("created_by_solr_shard_id_s", solrShardId); // pass it up the chain super.processAdd(cmd); } } //---------------------------------------------------------------- //---------------------------------------------------------------- // Added the below for a bit of context (http://wiki.apache.org/solr/SolrPlugins) //---------------------------------------------------------------- mkdir /opt/solr/instances/test/collection1/lib cp /home/user/download/test-solr-plugins-0.0.1.jar /opt/solr/instances/test/collection1/lib/ chown root:tomcat7 /opt/solr/instances/test/collection1/lib/* vim /opt/solr/instances/test/collection1/conf/solrconfig.xml <updateRequestProcessorChain name="mychain"> <processor class="com.test.solr.plugins.DocumentCreationDetailsProcessorFactory"> </processor> <processor class="solr.LogUpdateProcessorFactory" /> <processor class="solr.RunUpdateProcessorFactory" /> </updateRequestProcessorChain> vim /opt/solr/instances/test/collection1/conf/solrconfig.xml <requestHandler name="/update" class="solr.UpdateRequestHandler"> <lst name="defaults"> <str name="update.chain">mychain</str> </lst> </requestHandler> -- View this message in context: http://lucene.472066.n3.nabble.com/Solr-4-x-auto-increment-sequence-counter-functionality-tp4045125p4045725.html Sent from the Solr - User mailing list archive at Nabble.com.