Skip to content

Commit

Permalink
extract the submission properties indexation step into a file
Browse files Browse the repository at this point in the history
  • Loading branch information
syphax-bouazzouni committed Apr 20, 2024
1 parent 70f314e commit ddeee2c
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 42 deletions.
42 changes: 0 additions & 42 deletions lib/ontologies_linked_data/models/ontology_submission.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1051,48 +1051,6 @@ def index_terms(logger, commit = true, optimize = true)
end
end

def index_properties(logger, commit = true, optimize = true)
page = 1
size = 2500
count_props = 0

time = Benchmark.realtime do
self.bring(:ontology) if self.bring?(:ontology)
self.ontology.bring(:acronym) if self.ontology.bring?(:acronym)
logger.info("Indexing ontology properties: #{self.ontology.acronym}...")
t0 = Time.now
self.ontology.unindex_properties(commit)
logger.info("Removed ontology properties index in #{Time.now - t0} seconds."); logger.flush

props = self.ontology.properties
count_props = props.length
total_pages = (count_props / size.to_f).ceil
logger.info("Indexing a total of #{total_pages} pages of #{size} properties each.")

props.each_slice(size) do |prop_batch|
t = Time.now
LinkedData::Models::OntologyProperty.indexBatch(prop_batch)
logger.info("Page #{page} of ontology properties indexed in #{Time.now - t} seconds."); logger.flush
page += 1
end

if commit
t0 = Time.now
LinkedData::Models::OntologyProperty.indexCommit(nil)
logger.info("Ontology properties index commit in #{Time.now - t0} seconds.")
end
end
logger.info("Completed indexing ontology properties of #{self.ontology.acronym} in #{time} sec. Total of #{count_props} properties indexed.")
logger.flush

if optimize
logger.info("Optimizing ontology properties index...")
time = Benchmark.realtime do
LinkedData::Models::OntologyProperty.indexOptimize(nil)
end
logger.info("Completed optimizing ontology properties index in #{time} seconds.")
end
end

# Override delete to add removal from the search index
# TODO: revise this with a better process
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
module LinkedData
module Services
class SubmissionPropertiesIndexer < OntologySubmissionProcess

def process(logger, options = nil)
process_indexation(logger, options)
end

private

def process_indexation(logger, options)
status = LinkedData::Models::SubmissionStatus.find('INDEXED_PROPERTIES').first
begin
index_properties(logger, commit: options[:commit], optimize: false)
@submission.add_submission_status(status)
rescue StandardError => e
logger.error("#{e.class}: #{e.message}\n#{e.backtrace.join("\n\t")}")
logger.flush
@submission.add_submission_status(status.get_error_status)
ensure
@submission.save
end
end

def index_properties(logger, commit: true, optimize: true)
page = 1
size = 2500
count_props = 0

time = Benchmark.realtime do
@submission.bring(:ontology) if @submission.bring?(:ontology)
@submission.ontology.bring(:acronym) if @submission.ontology.bring?(:acronym)
logger.info("Indexing ontology properties: #{@submission.ontology.acronym}...")
t0 = Time.now
@submission.ontology.unindex_properties(commit)
logger.info("Removed ontology properties index in #{Time.now - t0} seconds."); logger.flush

props = @submission.ontology.properties
count_props = props.length
total_pages = (count_props/size.to_f).ceil
logger.info("Indexing a total of #{total_pages} pages of #{size} properties each.")

props.each_slice(size) do |prop_batch|
t = Time.now
LinkedData::Models::OntologyProperty.indexBatch(prop_batch)
logger.info("Page #{page} of ontology properties indexed in #{Time.now - t} seconds."); logger.flush
page += 1
end

if commit
t0 = Time.now
LinkedData::Models::OntologyProperty.indexCommit
logger.info("Ontology properties index commit in #{Time.now - t0} seconds.")
end
end
logger.info("Completed indexing ontology properties of #{@submission.ontology.acronym} in #{time} sec. Total of #{count_props} properties indexed.")
logger.flush

if optimize
logger.info('Optimizing ontology properties index...')
time = Benchmark.realtime do
LinkedData::Models::OntologyProperty.indexOptimize
end
logger.info("Completed optimizing ontology properties index in #{time} seconds.")
end
end
end
end
end

0 comments on commit ddeee2c

Please sign in to comment.