-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathquote_indexer.rb
47 lines (41 loc) · 1.28 KB
/
quote_indexer.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
require "traject/indexer"
module Dromedary
class QuoteIndexer
attr_accessor :settings, :indexer, :logger
def initialize(passed_settings = {})
index_dir = AnnoyingUtilities::DROMEDARY_ROOT + "indexer"
default_settings = {
"log.batch_size" => 2_500,
"reader_class_name" => "MedInstaller::Traject::EntryJsonReader",
"solr_writer.batch_size" => 200,
:writer_file => index_dir + "writers" + "localhost.rb",
:rule_files => [Pathname(__dir__) + "basic_rules.rb"]
}
@settings = default_settings.merge passed_settings
@logger = AnnoyingUtilities.logger
create_indexer!(@settings)
end
def create_indexer!(settings = self.settings)
@indexer = Traject::Indexer.new(settings)
settings[:rule_files].each { |rf|
logger.info "Loading #{rf}"
@indexer.load_config_file(rf)
}
@indexer.load_config_file(settings[:writer_file])
@indexer
end
def writer
indexer.writer
end
def put(record, position)
ctxt = Traject::Indexer::Context.new(
source_record: record,
settings: settings,
position: position,
logger: logger
)
indexer.map_to_context!(ctxt) # side-effects the context
writer.put(ctxt)
end
end
end