solr_ead 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +18 -0
- data/.rvmrc +48 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +178 -0
- data/Rakefile +5 -0
- data/config/solr.yml +6 -0
- data/lib/ead_mapper.rb +22 -0
- data/lib/solr_ead/behaviors.rb +124 -0
- data/lib/solr_ead/component.rb +74 -0
- data/lib/solr_ead/document.rb +72 -0
- data/lib/solr_ead/indexer.rb +128 -0
- data/lib/solr_ead/om_behaviors.rb +38 -0
- data/lib/solr_ead/railtie.rb +7 -0
- data/lib/solr_ead/version.rb +3 -0
- data/lib/solr_ead.rb +20 -0
- data/lib/tasks/solr_ead.rake +30 -0
- data/lib/terminology_based_solrizer.rb +9 -0
- data/solr_ead.gemspec +27 -0
- data/spec/behaviors_spec.rb +105 -0
- data/spec/component_spec.rb +32 -0
- data/spec/document_spec.rb +80 -0
- data/spec/fixtures/ARC-0005.xml +1301 -0
- data/spec/fixtures/component_template.xml +19 -0
- data/spec/fixtures/ead_sample.xml +455 -0
- data/spec/fixtures/ead_template.xml +28 -0
- data/spec/fixtures/pp002010.xml +1139 -0
- data/spec/indexer_spec.rb +112 -0
- data/spec/spec_helper.rb +30 -0
- metadata +198 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe SolrEad::Indexer do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@file = fixture "ARC-0005.xml"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "indexing an ead document into multiple solr documents" do
|
10
|
+
|
11
|
+
before :each do
|
12
|
+
@indexer = SolrEad::Indexer.new
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should index a new ead from a file" do
|
16
|
+
@indexer.create(@file)
|
17
|
+
q = @indexer.solr.get 'select', :params => {:q=>'eadid_s:"ARC-0005"', :qt=>'document'}
|
18
|
+
q["response"]["numFound"].should == 136
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
it "should update an ead from a file" do
|
23
|
+
@indexer.update(@file)
|
24
|
+
q = @indexer.solr.get 'select', :params => {:q=>'eadid_s:"ARC-0005"', :qt=>'document'}
|
25
|
+
q["response"]["numFound"].should == 136
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should delete and ead give an id" do
|
29
|
+
@indexer.delete("ARC-0005")
|
30
|
+
q = @indexer.solr.get 'select', :params => {:q=>'eadid_s:"ARC-0005"', :qt=>'document'}
|
31
|
+
q["response"]["numFound"].should == 0
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "indexing ead document into one solr document" do
|
37
|
+
|
38
|
+
before :each do
|
39
|
+
@simple_indexer = SolrEad::Indexer.new(:simple => true)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should be set to use the simple option" do
|
43
|
+
@simple_indexer.options[:simple].should be_true
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should index a new ead from a file as a single solr document" do
|
47
|
+
@simple_indexer.create(@file)
|
48
|
+
q = @simple_indexer.solr.get 'select', :params => {:q=>'eadid_s:"ARC-0005"', :qt=>'document'}
|
49
|
+
q["response"]["numFound"].should == 1
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should delete a single ead" do
|
53
|
+
@simple_indexer.delete("ARC-0005")
|
54
|
+
q = @simple_indexer.solr.get 'select', :params => {:q=>'eadid_s:"ARC-0005"', :qt=>'document'}
|
55
|
+
q["response"]["numFound"].should == 0
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "specifying custom om definitions" do
|
61
|
+
|
62
|
+
before :all do
|
63
|
+
class CustomDocument < SolrEad::Document
|
64
|
+
include OM::XML::Document
|
65
|
+
include Solrizer::XML::TerminologyBasedSolrizer
|
66
|
+
include SolrEad::OmBehaviors
|
67
|
+
set_terminology do |t|
|
68
|
+
t.root(:path=>"ead", :index_as => [:not_searchable])
|
69
|
+
t.title
|
70
|
+
t.eadid
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class CustomComponent < SolrEad::Component
|
75
|
+
include OM::XML::Document
|
76
|
+
include Solrizer::XML::TerminologyBasedSolrizer
|
77
|
+
set_terminology do |t|
|
78
|
+
t.root(:path=>"c", :index_as => [:not_searchable, :not_displayable])
|
79
|
+
t.ref(:path=>"/c/@id")
|
80
|
+
t.level(:path=>"/c/@level", :index_as => [:facetable])
|
81
|
+
t.title(:path=>"unittitle", :attributes=>{ :type => :none }, :index_as=>[:searchable, :displayable])
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should raise an error if you use an undefined class" do
|
87
|
+
lambda {SolrEad::Indexer.new(:document => BogusClass)}.should raise_error NameError
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should accept a document definition" do
|
91
|
+
indexer = SolrEad::Indexer.new(:document => CustomDocument)
|
92
|
+
indexer.create(@file)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should accept a component definition" do
|
96
|
+
indexer = SolrEad::Indexer.new(:component => CustomComponent)
|
97
|
+
indexer.create(@file)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should accept a simple custom document definition" do
|
101
|
+
indexer = SolrEad::Indexer.new(:document => CustomDocument, :simple=>true)
|
102
|
+
indexer.create(@file)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should accept both custom definitions and components" do
|
106
|
+
indexer = SolrEad::Indexer.new(:document => CustomDocument, :component => CustomComponent)
|
107
|
+
indexer.create(@file)
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# :nodoc
|
2
|
+
require "solr_ead"
|
3
|
+
require "debugger"
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
|
7
|
+
# == Mock Framework
|
8
|
+
# Note: we're not mocking... yet.
|
9
|
+
# config.mock_with :mocha
|
10
|
+
# config.mock_with :flexmock
|
11
|
+
# config.mock_with :rr
|
12
|
+
#config.mock_with :rspec
|
13
|
+
|
14
|
+
config.color = true
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def fixture(file) #:nodoc
|
19
|
+
File.new(File.join(File.dirname(__FILE__), 'fixtures', file))
|
20
|
+
end
|
21
|
+
|
22
|
+
def debug_solr_doc(doc) #:nodoc
|
23
|
+
doc.keys.each do |key|
|
24
|
+
unless key.to_s.match("xml_t")
|
25
|
+
puts "#" * 50
|
26
|
+
puts key.to_s + "==="
|
27
|
+
puts doc[key]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,198 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: solr_ead
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Adam Wead
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-08-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: om
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: solrizer
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rsolr
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: sanitize
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rspec
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: debugger
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rdoc
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: A gem indexing ead into solr using OM. Define your own OM terminology
|
127
|
+
to create the solr fields you want from your ead, then use solr-based applications
|
128
|
+
like Blacklight to search and display the results.
|
129
|
+
email:
|
130
|
+
- amsterdamos@gmail.com
|
131
|
+
executables: []
|
132
|
+
extensions: []
|
133
|
+
extra_rdoc_files: []
|
134
|
+
files:
|
135
|
+
- .gitignore
|
136
|
+
- .rvmrc
|
137
|
+
- Gemfile
|
138
|
+
- LICENSE
|
139
|
+
- README.md
|
140
|
+
- Rakefile
|
141
|
+
- config/solr.yml
|
142
|
+
- lib/ead_mapper.rb
|
143
|
+
- lib/solr_ead.rb
|
144
|
+
- lib/solr_ead/behaviors.rb
|
145
|
+
- lib/solr_ead/component.rb
|
146
|
+
- lib/solr_ead/document.rb
|
147
|
+
- lib/solr_ead/indexer.rb
|
148
|
+
- lib/solr_ead/om_behaviors.rb
|
149
|
+
- lib/solr_ead/railtie.rb
|
150
|
+
- lib/solr_ead/version.rb
|
151
|
+
- lib/tasks/solr_ead.rake
|
152
|
+
- lib/terminology_based_solrizer.rb
|
153
|
+
- solr_ead.gemspec
|
154
|
+
- spec/behaviors_spec.rb
|
155
|
+
- spec/component_spec.rb
|
156
|
+
- spec/document_spec.rb
|
157
|
+
- spec/fixtures/ARC-0005.xml
|
158
|
+
- spec/fixtures/component_template.xml
|
159
|
+
- spec/fixtures/ead_sample.xml
|
160
|
+
- spec/fixtures/ead_template.xml
|
161
|
+
- spec/fixtures/pp002010.xml
|
162
|
+
- spec/indexer_spec.rb
|
163
|
+
- spec/spec_helper.rb
|
164
|
+
homepage: http://github.com/awead/ead_solr
|
165
|
+
licenses: []
|
166
|
+
post_install_message:
|
167
|
+
rdoc_options: []
|
168
|
+
require_paths:
|
169
|
+
- lib
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
requirements: []
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 1.8.24
|
185
|
+
signing_key:
|
186
|
+
specification_version: 3
|
187
|
+
summary: A gem for indexing ead into solr using OM
|
188
|
+
test_files:
|
189
|
+
- spec/behaviors_spec.rb
|
190
|
+
- spec/component_spec.rb
|
191
|
+
- spec/document_spec.rb
|
192
|
+
- spec/fixtures/ARC-0005.xml
|
193
|
+
- spec/fixtures/component_template.xml
|
194
|
+
- spec/fixtures/ead_sample.xml
|
195
|
+
- spec/fixtures/ead_template.xml
|
196
|
+
- spec/fixtures/pp002010.xml
|
197
|
+
- spec/indexer_spec.rb
|
198
|
+
- spec/spec_helper.rb
|