Example #1
0
	def commitSolrChanges(self):		
		print "*** Committing Changes ***"
		result = solr_handle.commit()
		print result
		return result
Example #2
0
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()
Example #3
0
 def commit(self):
     return solr_handle.commit()