marc2solr 0.1.4 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +6 -0
- data/Rakefile +4 -5
- data/VERSION +1 -1
- data/bin/marc2solr +41 -37
- data/lib/marc2solr/marc2solr_custom.rb +2 -2
- data/lib/marc2solr.rb +16 -10
- metadata +184 -161
data/CHANGES
CHANGED
data/Rakefile
CHANGED
@@ -11,19 +11,18 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/billdueber/marc2solr"
|
12
12
|
gem.authors = ["BillDueber"]
|
13
13
|
|
14
|
-
gem.add_dependency 'marc4j4r', '>= 1.
|
14
|
+
gem.add_dependency 'marc4j4r', '>= 1.3.0'
|
15
15
|
gem.add_dependency 'jruby_streaming_update_solr_server', '>=0.5.2'
|
16
|
-
gem.add_dependency 'marcspec', '>= 1.6.
|
16
|
+
gem.add_dependency 'marcspec', '>= 1.6.5'
|
17
17
|
gem.add_dependency 'threach', '>= 0.2.0'
|
18
|
-
gem.add_dependency '
|
18
|
+
gem.add_dependency 'jlogger', '>=0.0.4'
|
19
19
|
gem.add_dependency 'library_stdnums', '>=0.2.0'
|
20
20
|
gem.add_dependency 'trollop'
|
21
|
+
|
21
22
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
22
23
|
gem.add_development_dependency "yard", ">= 0"
|
23
24
|
|
24
25
|
gem.bindir = 'bin'
|
25
|
-
gem.executables << 'solrmarc_to_marc2solr'
|
26
|
-
gem.executables << 'marc2solr'
|
27
26
|
|
28
27
|
end
|
29
28
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.6
|
data/bin/marc2solr
CHANGED
@@ -21,7 +21,7 @@ opts = MARC2Solr::Conf.new
|
|
21
21
|
###########################
|
22
22
|
|
23
23
|
|
24
|
-
|
24
|
+
LOG = opts.masterLogger
|
25
25
|
|
26
26
|
# Perform the command
|
27
27
|
|
@@ -32,13 +32,13 @@ case opts.command
|
|
32
32
|
#################
|
33
33
|
|
34
34
|
when "commit"
|
35
|
-
|
35
|
+
LOG.info "Commit to #{opts.sussURL}"
|
36
36
|
if opts[:dryrun]
|
37
|
-
|
38
|
-
|
37
|
+
LOG.debug "Using javabin" if opts[:javabin]
|
38
|
+
LOG.info "DRY RUN. Stopping now."
|
39
39
|
else
|
40
40
|
opts.suss.commit
|
41
|
-
|
41
|
+
LOG.info "Commit done"
|
42
42
|
end
|
43
43
|
|
44
44
|
|
@@ -49,7 +49,7 @@ when "commit"
|
|
49
49
|
when "delete"
|
50
50
|
delfiles = opts.rest
|
51
51
|
unless delfiles.size > 0
|
52
|
-
|
52
|
+
LOG.error "command 'delete' needs at least one filename"
|
53
53
|
puts "\n\nERROR: command 'delete' needs at least one filename"
|
54
54
|
opts.print_command_help('delete')
|
55
55
|
end
|
@@ -60,7 +60,7 @@ when "delete"
|
|
60
60
|
# Make sure they can all be opened
|
61
61
|
delfiles.each do |filename|
|
62
62
|
unless File.readable? filename
|
63
|
-
|
63
|
+
LOG.error "Can't open configuration file `#{filename}`"
|
64
64
|
raise ArgumentError, "Can't open configuration file `#{filename}`"
|
65
65
|
end
|
66
66
|
end
|
@@ -71,24 +71,24 @@ when "delete"
|
|
71
71
|
delfiles.each do |filename|
|
72
72
|
count = 0
|
73
73
|
f = File.open(filename)
|
74
|
-
|
75
|
-
|
74
|
+
LOG.info "Deleting IDs listed in #{filename}"
|
75
|
+
LOG.info "DRY RUN ONLY" if opts[:dryrun]
|
76
76
|
f.each_line do |id|
|
77
77
|
id.chomp!
|
78
78
|
suss.deleteById(id) unless opts[:dryrun]
|
79
|
-
|
79
|
+
LOG.debug "Deleted id\t{}", id
|
80
80
|
count += 1
|
81
81
|
total += 1
|
82
82
|
end
|
83
83
|
f.close
|
84
|
-
|
84
|
+
LOG.info "Tried to delete #{count} ids from file '#{filename}'"
|
85
85
|
end
|
86
|
-
|
86
|
+
LOG.info "Tried to delete #{total} ids from all #{delfiles.size} files" if delfiles.size > 1
|
87
87
|
|
88
88
|
unless opts[:dryrun] or opts[:skipcommit]
|
89
|
-
|
89
|
+
LOG.info "Sending final commit"
|
90
90
|
suss.commit
|
91
|
-
|
91
|
+
LOG.info "Final commit finished"
|
92
92
|
end
|
93
93
|
|
94
94
|
|
@@ -100,7 +100,7 @@ when "index"
|
|
100
100
|
marcfiles = opts.rest
|
101
101
|
|
102
102
|
unless marcfiles.size > 0
|
103
|
-
|
103
|
+
LOG.error "command 'delete' needs at least one marc file to index"
|
104
104
|
puts "\n\nERROR: command 'index' needs at least one filename"
|
105
105
|
opts.print_command_help('index')
|
106
106
|
end
|
@@ -108,48 +108,48 @@ when "index"
|
|
108
108
|
|
109
109
|
# Make sure everything can be opened
|
110
110
|
unless File.readable? opts[:indexfile]
|
111
|
-
|
111
|
+
LOG.error "Index configuration file '#{opts[:indexfile]}' (set with --indexfile) cannot be found/read"
|
112
112
|
raise ArgumentError, "Index configuration file '#{opts[:indexfile]}' (set with --indexfile) cannot be found/read"
|
113
113
|
else
|
114
|
-
|
114
|
+
LOG.debug "Found index file #{opts[:indexfile]}"
|
115
115
|
end
|
116
116
|
|
117
117
|
unless File.readable? opts[:tmapdir]
|
118
|
-
|
118
|
+
LOG.error "Translation Map directory '#{opts[:tmapdir]}' (set with --tmapdir) cannot be found/read"
|
119
119
|
raise ArgumentError, "Translation Map directory '#{opts[:tmapdir]}' (set with --tmapdir) cannot be found/read"
|
120
120
|
else
|
121
|
-
|
121
|
+
LOG.debug "Found translation maps directory #{opts[:tmapdir]}"
|
122
122
|
end
|
123
123
|
|
124
124
|
marcfiles.each do |filename|
|
125
125
|
if filename == "STDIN"
|
126
|
-
|
126
|
+
LOG.info "Using standard input as a marc file"
|
127
127
|
next
|
128
128
|
end
|
129
129
|
unless File.readable? filename
|
130
|
-
|
130
|
+
LOG.error "Can't open MARC file `#{filename}`"
|
131
131
|
raise ArgumentError, "Can't open MARC file `#{filename}`"
|
132
132
|
else
|
133
|
-
|
133
|
+
LOG.debug "Adding marc file #{filename} to queue"
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
137
137
|
|
138
138
|
# Load all the files in the customdir(s)
|
139
|
-
|
139
|
+
LOG.debug "Loading custom routines"
|
140
140
|
if opts[:customdir].size > 0
|
141
141
|
opts[:customdir].each do |dir|
|
142
142
|
unless File.exist? dir
|
143
|
-
|
143
|
+
LOG.warn "Skipping load directory '#{dir}': Not found"
|
144
144
|
opts[:customdir].delete dir
|
145
145
|
end
|
146
|
-
|
146
|
+
LOG.info "Loading files in #{dir}"
|
147
147
|
Dir.glob(["#{dir}/*.jar"]).each do |x|
|
148
|
-
|
148
|
+
LOG.debug "Loading #{x}"
|
149
149
|
require x
|
150
150
|
end
|
151
151
|
Dir.glob(["#{dir}/*.rb"]).each do |x|
|
152
|
-
|
152
|
+
LOG.debug "Loading #{x}"
|
153
153
|
require x
|
154
154
|
end
|
155
155
|
end
|
@@ -166,26 +166,28 @@ when "index"
|
|
166
166
|
|
167
167
|
# Set up if we're using threach or not
|
168
168
|
if opts[:threads] > 1
|
169
|
+
LOG.info "Using #{opts[:threads]} threads; activiating threach"
|
169
170
|
method = :threach
|
170
171
|
args = [opts[:threads], :each_with_index]
|
171
172
|
else
|
173
|
+
LOG.info "Using 1 thread"
|
172
174
|
method = :each_with_index
|
173
175
|
args = []
|
174
176
|
end
|
175
177
|
|
176
178
|
|
177
179
|
if opts[:dryrun]
|
178
|
-
|
180
|
+
LOG.info "Begin DRY RUN; nothing will be sent to Solr"
|
179
181
|
end
|
180
182
|
|
181
183
|
# Clear solr if so declared
|
182
184
|
if opts[:clearsolr]
|
183
185
|
if opts[:dryrun]
|
184
|
-
|
186
|
+
LOG.info "Would have cleared out solr (but for dryrun)"
|
185
187
|
else
|
186
188
|
suss.deleteByQuery('*:*')
|
187
189
|
suss.commit
|
188
|
-
|
190
|
+
LOG.info "Cleared out solr"
|
189
191
|
end
|
190
192
|
end
|
191
193
|
|
@@ -195,11 +197,13 @@ when "index"
|
|
195
197
|
|
196
198
|
start = Time.new.to_f
|
197
199
|
marcfiles.each do |filename|
|
198
|
-
|
200
|
+
LOG.info "Indexing file {}", filename
|
199
201
|
|
200
202
|
reader = opts.reader(filename)
|
201
203
|
reader.send(method, *args) do |r, i|
|
202
204
|
Thread.current[:index] = i
|
205
|
+
|
206
|
+
LOG.debug "Record {} with 001 {}", i, r['001'].value
|
203
207
|
|
204
208
|
doc = ss.doc_from_marc(r, opts[:benchmark])
|
205
209
|
|
@@ -215,7 +219,7 @@ when "index"
|
|
215
219
|
|
216
220
|
if Thread.current[:index] % opts[:logbatchsize] == 0
|
217
221
|
pace = Thread.current[:index] / (Time.new.to_f - start)
|
218
|
-
|
222
|
+
LOG.info "%d indexed (overall pace: %.0f rec/sec)" % [Thread.current[:index], pace]
|
219
223
|
end
|
220
224
|
end # reader
|
221
225
|
end # marcfiles
|
@@ -223,21 +227,21 @@ when "index"
|
|
223
227
|
# Commit
|
224
228
|
|
225
229
|
unless opts[:dryrun] or opts[:skipcommit]
|
226
|
-
|
230
|
+
LOG.info "Sending final commit"
|
227
231
|
suss.commit
|
228
|
-
|
232
|
+
LOG.info "Final commit finished"
|
229
233
|
end
|
230
234
|
|
231
235
|
# Be done
|
232
|
-
|
236
|
+
LOG.info "Done indexing"
|
233
237
|
pace = i / (Time.new.to_f - start)
|
234
|
-
|
238
|
+
LOG.info "%d indexed (overall pace: %.0f rec/sec)" % [i, pace]
|
235
239
|
|
236
240
|
|
237
241
|
# Log the benchmarking information if requested
|
238
242
|
if opts[:benchmark]
|
239
243
|
ss.benchmarks.keys.sort{|a,b| ss.benchmarks[b].real <=> ss.benchmarks[a].real}.each do |k|
|
240
|
-
|
244
|
+
LOG.info("%-20s %s" % [k + ':', ss.benchmarks[k].real.to_s])
|
241
245
|
end
|
242
246
|
end
|
243
247
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require '
|
2
|
+
require 'jlogger'
|
3
3
|
require 'library_stdnums'
|
4
4
|
|
5
5
|
module MARC2Solr
|
6
6
|
module Custom
|
7
|
-
LOG =
|
7
|
+
LOG = JLogger::RootLogger.new
|
8
8
|
|
9
9
|
# Custom routines are defined as module methods that take two arguments: a MARC4J4R record,
|
10
10
|
# and an (optional) array of other arguments passed in.
|
data/lib/marc2solr.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'jlogger'
|
4
4
|
require 'trollop'
|
5
5
|
require 'ftools'
|
6
6
|
require 'jruby_streaming_update_solr_server'
|
@@ -9,7 +9,7 @@ require 'marc4j4r'
|
|
9
9
|
module MARC2Solr
|
10
10
|
|
11
11
|
class Conf
|
12
|
-
include
|
12
|
+
include JLogger::Simple
|
13
13
|
|
14
14
|
SUB_COMMANDS = %w(index delete commit help)
|
15
15
|
|
@@ -149,7 +149,7 @@ module MARC2Solr
|
|
149
149
|
# Load the config files
|
150
150
|
if @cmdline[:config]
|
151
151
|
@cmdline[:config].each do |f|
|
152
|
-
log.info "Reading config-file '
|
152
|
+
log.info "Reading config-file '{}'", f.path
|
153
153
|
self.instance_eval(f.read)
|
154
154
|
end
|
155
155
|
end
|
@@ -367,7 +367,12 @@ module MARC2Solr
|
|
367
367
|
|
368
368
|
def suss
|
369
369
|
url = self.sussURL
|
370
|
-
log.
|
370
|
+
log.info "Set suss url to {}", url
|
371
|
+
if @config[:sussthreads] > 1
|
372
|
+
log.info "Using {} threads for the suss", @config[:sussthreads]
|
373
|
+
else
|
374
|
+
log.info "Using a single thread for the suss"
|
375
|
+
end
|
371
376
|
|
372
377
|
suss = StreamingUpdateSolrServer.new(url,@config[:susssize],@config[:sussthreads])
|
373
378
|
if self[:javabin]
|
@@ -378,23 +383,24 @@ module MARC2Solr
|
|
378
383
|
end
|
379
384
|
|
380
385
|
def masterLogger
|
381
|
-
mlog =
|
386
|
+
mlog = JLogger::RootLogger.new
|
382
387
|
mlog.loglevel = @config[:loglevel].downcase.to_sym
|
383
388
|
|
384
389
|
firstfile = self.rest[0] || self.command
|
385
390
|
logfilename = File.basename(firstfile).gsub(/\..*$/, '') # remove the last extension
|
386
391
|
logfilename += '-' + Time.new.strftime('%Y%m%d-%H%M%S') + '.log'
|
387
392
|
|
388
|
-
Logback::Simple.loglevel = @config[:loglevel].downcase.to_sym
|
389
393
|
case @config[:logfile]
|
390
394
|
when "STDERR"
|
391
|
-
|
395
|
+
mlog.startConsole
|
392
396
|
when "DEFAULT"
|
393
|
-
|
397
|
+
mlog.startFile(logfilename)
|
394
398
|
when 'NONE', nil
|
399
|
+
mlog.stopConsole
|
400
|
+
mlog.loglevel = :off
|
395
401
|
# do nothing
|
396
402
|
else
|
397
|
-
|
403
|
+
mlog.startFile(@config[:logfile])
|
398
404
|
end
|
399
405
|
return mlog
|
400
406
|
end
|
@@ -417,7 +423,7 @@ module MARC2Solr
|
|
417
423
|
gzipped = true
|
418
424
|
end
|
419
425
|
|
420
|
-
log.info "Sniffed marc file type as
|
426
|
+
log.info "Sniffed marc file type as {}", ext
|
421
427
|
case ext
|
422
428
|
when /xml/, /marcxml/
|
423
429
|
type = :marcxml
|
metadata
CHANGED
@@ -1,199 +1,222 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marc2solr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
version: 0.1.
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
|
-
|
13
|
+
- BillDueber
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-15 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
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
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: marc4j4r
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 27
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 3
|
33
|
+
- 0
|
34
|
+
version: 1.3.0
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: jruby_streaming_update_solr_server
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 15
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
- 5
|
49
|
+
- 2
|
50
|
+
version: 0.5.2
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: marcspec
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 5
|
62
|
+
segments:
|
63
|
+
- 1
|
64
|
+
- 6
|
65
|
+
- 5
|
66
|
+
version: 1.6.5
|
67
|
+
type: :runtime
|
68
|
+
version_requirements: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: threach
|
71
|
+
prerelease: false
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 23
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
- 2
|
81
|
+
- 0
|
82
|
+
version: 0.2.0
|
83
|
+
type: :runtime
|
84
|
+
version_requirements: *id004
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: jlogger
|
87
|
+
prerelease: false
|
88
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
hash: 23
|
94
|
+
segments:
|
95
|
+
- 0
|
96
|
+
- 0
|
97
|
+
- 4
|
98
|
+
version: 0.0.4
|
99
|
+
type: :runtime
|
100
|
+
version_requirements: *id005
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: library_stdnums
|
103
|
+
prerelease: false
|
104
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
hash: 23
|
110
|
+
segments:
|
111
|
+
- 0
|
112
|
+
- 2
|
113
|
+
- 0
|
114
|
+
version: 0.2.0
|
115
|
+
type: :runtime
|
116
|
+
version_requirements: *id006
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: trollop
|
119
|
+
prerelease: false
|
120
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
hash: 3
|
126
|
+
segments:
|
127
|
+
- 0
|
128
|
+
version: "0"
|
129
|
+
type: :runtime
|
130
|
+
version_requirements: *id007
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: rspec
|
133
|
+
prerelease: false
|
134
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
135
|
+
none: false
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
hash: 13
|
140
|
+
segments:
|
141
|
+
- 1
|
142
|
+
- 2
|
143
|
+
- 9
|
144
|
+
version: 1.2.9
|
145
|
+
type: :development
|
146
|
+
version_requirements: *id008
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: yard
|
149
|
+
prerelease: false
|
150
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
hash: 3
|
156
|
+
segments:
|
157
|
+
- 0
|
158
|
+
version: "0"
|
159
|
+
type: :development
|
160
|
+
version_requirements: *id009
|
140
161
|
description: Given a file of MARC records, send them to Sorl for indexing based on a set of MARCSpecs
|
141
162
|
email: bill@dueber.com
|
142
163
|
executables:
|
143
|
-
|
144
|
-
|
145
|
-
- solrmarc_to_marc2solr
|
146
|
-
- marc2solr
|
164
|
+
- marc2solr
|
165
|
+
- solrmarc_to_marc2solr
|
147
166
|
extensions: []
|
148
167
|
|
149
168
|
extra_rdoc_files:
|
150
|
-
|
151
|
-
|
169
|
+
- LICENSE
|
170
|
+
- README.md
|
152
171
|
files:
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
172
|
+
- .document
|
173
|
+
- .gitignore
|
174
|
+
- CHANGES
|
175
|
+
- LICENSE
|
176
|
+
- README.md
|
177
|
+
- Rakefile
|
178
|
+
- VERSION
|
179
|
+
- bin/marc2solr
|
180
|
+
- bin/solrmarc_to_marc2solr
|
181
|
+
- lib/marc2solr.rb
|
182
|
+
- lib/marc2solr/marc2solr_custom.rb
|
183
|
+
- spec/marc2solr_spec.rb
|
184
|
+
- spec/spec.opts
|
185
|
+
- spec/spec_helper.rb
|
167
186
|
has_rdoc: true
|
168
187
|
homepage: http://github.com/billdueber/marc2solr
|
169
188
|
licenses: []
|
170
189
|
|
171
190
|
post_install_message:
|
172
191
|
rdoc_options:
|
173
|
-
|
192
|
+
- --charset=UTF-8
|
174
193
|
require_paths:
|
175
|
-
|
194
|
+
- lib
|
176
195
|
required_ruby_version: !ruby/object:Gem::Requirement
|
196
|
+
none: false
|
177
197
|
requirements:
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
198
|
+
- - ">="
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
hash: 3
|
201
|
+
segments:
|
202
|
+
- 0
|
203
|
+
version: "0"
|
183
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
|
+
none: false
|
184
206
|
requirements:
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
207
|
+
- - ">="
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
hash: 3
|
210
|
+
segments:
|
211
|
+
- 0
|
212
|
+
version: "0"
|
190
213
|
requirements: []
|
191
214
|
|
192
215
|
rubyforge_project:
|
193
|
-
rubygems_version: 1.3.
|
216
|
+
rubygems_version: 1.3.7
|
194
217
|
signing_key:
|
195
218
|
specification_version: 3
|
196
219
|
summary: "MARC2Solr: Get MARC into Solr via JRuby"
|
197
220
|
test_files:
|
198
|
-
|
199
|
-
|
221
|
+
- spec/marc2solr_spec.rb
|
222
|
+
- spec/spec_helper.rb
|