def commitSolrChanges(self): print "*** Committing Changes ***" result = solr_handle.commit() print result return result
def solrIndexer(fedEvent, PID, printOnly=SOLR_INDEXER_WRITE_DEFAULT): print "solrIndexer running" # simple function to clean PID from /risearch def cleanPID(PID): return PID.split("/")[1].rstrip() #Set output filenames now = datetime.datetime.now().isoformat() outputs = {} outputs['downloadExcepts'] = './reports/'+now+'_downloadExcepts.csv' outputs['transformExcepts'] = './reports/'+now+'_transformExcepts.csv' outputs['indexExcepts'] = './reports/'+now+'_indexExcepts.csv' # init worker, always with printOnly parameter, defaulting to localConfig unless explicitly set worker = SolrIndexerWorker(printOnly=printOnly) # determine action based on fedEvent # Index single item per fedEvent if fedEvent == "modifyDatastreamByValue" or fedEvent == "ingest" or fedEvent == "modifyObject": print "Updating / Indexing",PID # index PIDs in Solr result = worker.indexFOXMLinSolr(PID,outputs) # printOnly, do not continue with updates if worker.printOnly == True: return result # return True # augment documents - from augmentCore.py augmentCore(PID) return True # timestamp based if fedEvent == "timestampIndex": print "Indexing all Fedora items that have been modified since last solrIndexer run" # generate list of PIDs to update toUpdate = worker.getToUpdate(worker.lastFedoraIndexDate) # begin iterating through for PID in toUpdate.readlines(): PID = cleanPID(PID) # index PIDs in Solr worker.indexFOXMLinSolr(PID,outputs) # augment documents - from augmentCore.py augmentCore(PID) # close handle toUpdate.close() # printOnly, do not continue with updates if worker.printOnly == True: return True # update timestamp in Solr worker.updateLastFedoraIndexDate() print "Total seconds elapsed",worker.totalTime return True # fullindex if fedEvent == "fullIndex": print "Indexing ALL Fedora items." # generate list of PIDs to update toUpdate = worker.getToUpdate("1969-12-31T12:59:59.265Z") # begin iterating through for PID in toUpdate.readlines(): PID = cleanPID(PID) # index PIDs in Solr worker.indexFOXMLinSolr(PID, outputs) # augment documents - from augmentCore.py augmentCore(PID) # close handle toUpdate.close() # printOnly, do not continue with updates if worker.printOnly == True: return True # update timestamp in Solr worker.updateLastFedoraIndexDate() print "Total seconds elapsed",worker.totalTime return True # Remove Object from Solr Index on Purge if fedEvent == "purgeObject": print "Removing the following from Solr Index",PID worker.removeFOXMLinSolr(PID) return True # finally, commit all changes print "committing changes" solr_handle.commit()
def commit(self): return solr_handle.commit()