blacklight_iiif_search 2.1.0 → 3.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.
- checksums.yaml +4 -4
- data/Rakefile +7 -2
- data/app/controllers/concerns/blacklight_iiif_search/controller.rb +7 -11
- data/lib/blacklight_iiif_search/version.rb +1 -1
- data/lib/generators/blacklight_iiif_search/install_generator.rb +3 -2
- data/lib/generators/blacklight_iiif_search/routes_generator.rb +1 -1
- data/lib/generators/blacklight_iiif_search/solr_generator.rb +19 -4
- data/spec/iiif_search_shared.rb +2 -2
- data/spec/models/blacklight_iiif_search/iiif_search_response_spec.rb +1 -1
- data/spec/models/blacklight_iiif_search/iiif_suggest_response_spec.rb +1 -1
- data/spec/models/blacklight_iiif_search/iiif_suggest_search_spec.rb +1 -1
- metadata +22 -34
- data/lib/generators/blacklight_iiif_search/templates/solr/lib/solr-tokenizing_suggester-7.x.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed2efa90d705303336350956363bfe81a1fdf4e91ed16ae4201499467d529ad2
|
4
|
+
data.tar.gz: e4c36bac0054843e5a0a3e2d699e3bf06f286bffd00d0ecfa4f8ba886e4484b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16e86e4afd961673afad60b46dc0f9dc07bc6a40126587f98ce749423a132cb5da4235e0f115f03cfb645310953445bd6014ab75fc3ee8847979a8782b6922e0
|
7
|
+
data.tar.gz: ece62ef3b0ca73c36952c0261a2430f065d0c7c644df697608bae92ec4070f39c9c1ab57cf52a7d6e7fd29f08b18f7f35659d79b74d075c1678240da4fcdac80
|
data/Rakefile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rails'
|
3
5
|
begin
|
4
6
|
require 'bundler/setup'
|
5
7
|
rescue LoadError
|
@@ -36,8 +38,11 @@ RuboCop::RakeTask.new(:rubocop)
|
|
36
38
|
desc 'Run test suite'
|
37
39
|
task ci: [:rubocop, 'engine_cart:generate'] do
|
38
40
|
SolrWrapper.wrap do |solr|
|
39
|
-
|
40
|
-
|
41
|
+
# single-term autocomplete via tokenizing-suggest currently requires Solr 7.*, see README.md for more info
|
42
|
+
if solr.version.to_f < 8
|
43
|
+
FileUtils.cp(File.join(__dir__, 'lib', 'generators', 'blacklight_iiif_search', 'templates', 'solr', 'lib', 'tokenizing-suggest-v1.0.1.jar'),
|
44
|
+
File.join(solr.instance_dir, 'contrib'))
|
45
|
+
end
|
41
46
|
solr.with_collection do
|
42
47
|
within_test_app do
|
43
48
|
system 'RAILS_ENV=test rake blacklight_iiif_search:index:seed'
|
@@ -11,23 +11,19 @@ module BlacklightIiifSearch
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def iiif_search
|
14
|
-
|
15
|
-
iiif_search = IiifSearch.new(iiif_search_params, iiif_search_config,
|
16
|
-
@parent_document)
|
14
|
+
@parent_document = search_service.fetch(params[:solr_document_id])
|
15
|
+
iiif_search = IiifSearch.new(iiif_search_params, iiif_search_config, @parent_document)
|
17
16
|
iiif_search_service = search_service_class.new(config: blacklight_config,
|
18
17
|
user_params: iiif_search.solr_params)
|
19
|
-
@response
|
20
|
-
iiif_search_response = IiifSearchResponse.new(@response,
|
21
|
-
|
22
|
-
|
23
|
-
render json: iiif_search_response.annotation_list,
|
24
|
-
content_type: 'application/json'
|
18
|
+
@response = iiif_search_service.search_results
|
19
|
+
iiif_search_response = IiifSearchResponse.new(@response, @parent_document, self)
|
20
|
+
|
21
|
+
render json: iiif_search_response.annotation_list, content_type: 'application/json'
|
25
22
|
end
|
26
23
|
|
27
24
|
def iiif_suggest
|
28
25
|
suggest_search = IiifSuggestSearch.new(params, Blacklight.default_index, self)
|
29
|
-
render json: suggest_search.response,
|
30
|
-
content_type: 'application/json'
|
26
|
+
render json: suggest_search.response, content_type: 'application/json'
|
31
27
|
end
|
32
28
|
|
33
29
|
def iiif_search_config
|
@@ -18,13 +18,14 @@ module BlacklightIiifSearch
|
|
18
18
|
1. Injects behavior into CatalogController
|
19
19
|
2. Adds a SearchBuilder to ./app/models
|
20
20
|
3. Adds BlacklightIiifSearch routes to ./config/routes.rb
|
21
|
-
4. Modifies solrconfig.xml to support contextual autocomplete functionality
|
21
|
+
4. Modifies Solr schema.xml and solrconfig.xml to support contextual autocomplete functionality
|
22
22
|
Thanks for installing Blacklight IIIF Search!
|
23
23
|
EOS
|
24
24
|
|
25
25
|
def verify_blacklight_installed
|
26
26
|
return if IO.read('app/controllers/application_controller.rb').include?('include Blacklight::Controller')
|
27
27
|
say_status('info', 'BLACKLIGHT NOT INSTALLED; GENERATING BLACKLIGHT', :blue)
|
28
|
+
|
28
29
|
generate 'blacklight:install'
|
29
30
|
end
|
30
31
|
|
@@ -45,7 +46,7 @@ module BlacklightIiifSearch
|
|
45
46
|
end
|
46
47
|
|
47
48
|
def bundle_install
|
48
|
-
Bundler.
|
49
|
+
Bundler.with_unbundled_env do
|
49
50
|
run 'bundle install'
|
50
51
|
end
|
51
52
|
end
|
@@ -10,7 +10,7 @@ module BlacklightIiifSearch
|
|
10
10
|
desc 'This generator makes the following changes to your app:
|
11
11
|
1. Injects route declarations into your routes.rb'
|
12
12
|
|
13
|
-
# Add
|
13
|
+
# Add BlacklightIiifSearch to the routes
|
14
14
|
def inject_iiif_search_routes
|
15
15
|
return if IO.read('config/routes.rb').include?('BlacklightIiifSearch::Routes')
|
16
16
|
|
@@ -16,18 +16,22 @@ module BlacklightIiifSearch
|
|
16
16
|
marker = '</config>'
|
17
17
|
inject_into_file 'solr/conf/solrconfig.xml', before: marker do
|
18
18
|
" <!-- BEGIN Blacklight IIIF Search autocomplete config -->
|
19
|
-
<!--
|
20
|
-
|
19
|
+
<!-- tokenizing-suggest is necessary to return only single terms from the suggester -->
|
20
|
+
<!-- to use this, copy the blacklight_iiif_search/lib/generators/blacklight_iiif_search/templates/solr/lib/tokenizing-suggest-v1.0.1.jar -->
|
21
|
+
<!-- to your Solr install's contrib directory, and uncomment the lines below. -->
|
22
|
+
<!-- HOWEVER, this only works in Solr 7.*, see blacklight_iiif_search README for more info. -->
|
23
|
+
<!-- <lib dir=\"${solr.install.dir:../../../..}/contrib\" regex=\"tokenizing-suggest-v1.0.1.jar\" /> -->
|
21
24
|
<searchComponent name=\"iiif_suggest\" class=\"solr.SuggestComponent\">
|
22
25
|
<lst name=\"suggester\">
|
23
26
|
<str name=\"name\">iiifSuggester</str>
|
24
|
-
<str name=\"lookupImpl\">
|
27
|
+
<str name=\"lookupImpl\">AnalyzingInfixLookupFactory</str>
|
25
28
|
<str name=\"dictionaryImpl\">DocumentDictionaryFactory</str>
|
26
29
|
<str name=\"suggestAnalyzerFieldType\">textSuggest</str>
|
27
|
-
<str name=\"suggestTokenizingAnalyzerFieldType\">textSuggestTokenizer</str>
|
28
30
|
<str name=\"contextField\">is_page_of_ssi</str>
|
29
31
|
<str name=\"buildOnCommit\">true</str>
|
30
32
|
<str name=\"field\">iiif_suggest</str>
|
33
|
+
<!-- <str name=\"lookupImpl\">edu.stanford.dlss.search.suggest.analyzing.TokenizingLookupFactory</str> -->
|
34
|
+
<!-- <str name=\"suggestTokenizingAnalyzerFieldType\">textSuggestTokenizer</str> -->
|
31
35
|
</lst>
|
32
36
|
</searchComponent>\n
|
33
37
|
<requestHandler name=\"/iiif_suggest\" class=\"solr.SearchHandler\" startup=\"lazy\">
|
@@ -51,6 +55,8 @@ module BlacklightIiifSearch
|
|
51
55
|
field_type_marker = '</types>'
|
52
56
|
inject_into_file filepath, before: field_type_marker do
|
53
57
|
"\n <!-- BEGIN Blacklight IIIF Search autocomplete config -->
|
58
|
+
<!-- textSuggestTokenizer is only used by edu.stanford.dlss.search.suggest.analyzing.TokenizingLookupFactory -->
|
59
|
+
<!-- this fieldType can be ignored if using Solr > 7, see blacklight_iiif_search README for more info. -->
|
54
60
|
<fieldType name=\"textSuggestTokenizer\" class=\"solr.TextField\" positionIncrementGap=\"100\">
|
55
61
|
<analyzer>
|
56
62
|
<tokenizer class=\"solr.WhitespaceTokenizerFactory\"/>
|
@@ -79,6 +85,15 @@ module BlacklightIiifSearch
|
|
79
85
|
<copyField source=\"all_text_timv\" dest=\"iiif_suggest\"/>
|
80
86
|
<!-- END Blacklight IIIF Search autocomplete config -->\n\n"
|
81
87
|
end
|
88
|
+
|
89
|
+
textsuggest_marker = /<fieldType[\s]*name="textSuggest"[^>]*>[\s]*<analyzer>[\s]*<tokenizer class="solr.KeywordTokenizerFactory"\/>/
|
90
|
+
gsub_file(filepath, textsuggest_marker) do
|
91
|
+
"<fieldType name=\"textSuggest\" class=\"solr.TextField\" positionIncrementGap=\"100\">
|
92
|
+
<analyzer>
|
93
|
+
<!-- Blacklight IIIF Search autocomplete suggester config requires StandardTokenizerFactory -->
|
94
|
+
<!-- <tokenizer class=\"solr.KeywordTokenizerFactory\"/> -->
|
95
|
+
<tokenizer class=\"solr.StandardTokenizerFactory\"/>"
|
96
|
+
end
|
82
97
|
end
|
83
98
|
|
84
99
|
def copy_suggester_library
|
data/spec/iiif_search_shared.rb
CHANGED
@@ -16,8 +16,8 @@ RSpec.shared_context 'iiif_search_shared' do
|
|
16
16
|
let(:suggest_search_params) do
|
17
17
|
{ q: suggest_query_term, solr_document_id: parent_id, date: 'foo' }
|
18
18
|
end
|
19
|
-
let(:parent_document) { controller.search_service.fetch(parent_id)
|
20
|
-
let(:page_document) { controller.search_service.fetch(page_id)
|
19
|
+
let(:parent_document) { controller.search_service.fetch(parent_id) }
|
20
|
+
let(:page_document) { controller.search_service.fetch(page_id) }
|
21
21
|
let(:repository) { Blacklight::Solr::Repository.new(blacklight_config) }
|
22
22
|
|
23
23
|
let(:iiif_search) do
|
@@ -8,7 +8,7 @@ RSpec.describe BlacklightIiifSearch::IiifSearchResponse do
|
|
8
8
|
controller.search_service_class.new(config: blacklight_config,
|
9
9
|
user_params: iiif_search.solr_params)
|
10
10
|
end
|
11
|
-
let(:solr_response) { iiif_search_service.search_results
|
11
|
+
let(:solr_response) { iiif_search_service.search_results }
|
12
12
|
let(:iiif_search_response) do
|
13
13
|
described_class.new(solr_response, parent_document, controller)
|
14
14
|
end
|
@@ -30,7 +30,7 @@ RSpec.describe BlacklightIiifSearch::IiifSuggestResponse do
|
|
30
30
|
it 'returns the expected data' do
|
31
31
|
expect(response_terms.length).to eq(5)
|
32
32
|
expect(response_terms.first[:url]).not_to be_falsey
|
33
|
-
expect(response_terms.first[:match].match(
|
33
|
+
expect(response_terms.first[:match].match(/#{suggest_query_term}/)).to be_truthy
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -32,7 +32,7 @@ RSpec.describe BlacklightIiifSearch::IiifSuggestSearch do
|
|
32
32
|
it 'returns the expected data' do
|
33
33
|
terms = suggest_results['suggest'][blacklight_config.iiif_search[:suggester_name]][suggest_query_term]['suggestions']
|
34
34
|
expect(terms.length).to eq(5)
|
35
|
-
expect(terms.first['term'].match(
|
35
|
+
expect(terms.first['term'].match(/#{suggest_query_term}/)).to be_truthy
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight_iiif_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eben English
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-04-25 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: rails
|
@@ -16,34 +15,34 @@ dependencies:
|
|
16
15
|
requirements:
|
17
16
|
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version: '6'
|
18
|
+
version: '6.1'
|
20
19
|
- - "<"
|
21
20
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
21
|
+
version: '8'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
version: '6'
|
28
|
+
version: '6.1'
|
30
29
|
- - "<"
|
31
30
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
31
|
+
version: '8'
|
33
32
|
- !ruby/object:Gem::Dependency
|
34
33
|
name: blacklight
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
36
35
|
requirements:
|
37
36
|
- - "~>"
|
38
37
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
38
|
+
version: '8.0'
|
40
39
|
type: :runtime
|
41
40
|
prerelease: false
|
42
41
|
version_requirements: !ruby/object:Gem::Requirement
|
43
42
|
requirements:
|
44
43
|
- - "~>"
|
45
44
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
45
|
+
version: '8.0'
|
47
46
|
- !ruby/object:Gem::Dependency
|
48
47
|
name: iiif-presentation
|
49
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,34 +57,26 @@ dependencies:
|
|
58
57
|
- - ">="
|
59
58
|
- !ruby/object:Gem::Version
|
60
59
|
version: '0'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: ffi
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 1.16.3
|
68
|
-
type: :runtime
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 1.16.3
|
75
60
|
- !ruby/object:Gem::Dependency
|
76
61
|
name: rspec-rails
|
77
62
|
requirement: !ruby/object:Gem::Requirement
|
78
63
|
requirements:
|
79
|
-
- - "
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '6.1'
|
67
|
+
- - "<"
|
80
68
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
69
|
+
version: '8'
|
82
70
|
type: :development
|
83
71
|
prerelease: false
|
84
72
|
version_requirements: !ruby/object:Gem::Requirement
|
85
73
|
requirements:
|
86
|
-
- - "
|
74
|
+
- - ">="
|
87
75
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
76
|
+
version: '6.1'
|
77
|
+
- - "<"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '8'
|
89
80
|
- !ruby/object:Gem::Dependency
|
90
81
|
name: solr_wrapper
|
91
82
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,14 +125,14 @@ dependencies:
|
|
134
125
|
requirements:
|
135
126
|
- - "~>"
|
136
127
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
128
|
+
version: '5.0'
|
138
129
|
type: :development
|
139
130
|
prerelease: false
|
140
131
|
version_requirements: !ruby/object:Gem::Requirement
|
141
132
|
requirements:
|
142
133
|
- - "~>"
|
143
134
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
135
|
+
version: '5.0'
|
145
136
|
description: Blacklight IIIF Search plugin
|
146
137
|
email:
|
147
138
|
- eenglish@bpl.org
|
@@ -169,7 +160,6 @@ files:
|
|
169
160
|
- lib/generators/blacklight_iiif_search/routes_generator.rb
|
170
161
|
- lib/generators/blacklight_iiif_search/solr_generator.rb
|
171
162
|
- lib/generators/blacklight_iiif_search/templates/iiif_search_builder.rb
|
172
|
-
- lib/generators/blacklight_iiif_search/templates/solr/lib/solr-tokenizing_suggester-7.x.jar
|
173
163
|
- lib/generators/blacklight_iiif_search/templates/solr/lib/tokenizing-suggest-v1.0.1.jar
|
174
164
|
- lib/railties/blacklight_iiif_search.rake
|
175
165
|
- spec/controllers/catalog_controller_spec.rb
|
@@ -191,7 +181,6 @@ licenses:
|
|
191
181
|
metadata:
|
192
182
|
homepage_uri: https://github.com/boston-library/blacklight_iiif_search
|
193
183
|
source_code_uri: https://github.com/boston-library/blacklight_iiif_search
|
194
|
-
post_install_message:
|
195
184
|
rdoc_options: []
|
196
185
|
require_paths:
|
197
186
|
- lib
|
@@ -199,15 +188,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
199
188
|
requirements:
|
200
189
|
- - ">="
|
201
190
|
- !ruby/object:Gem::Version
|
202
|
-
version: '
|
191
|
+
version: '2.7'
|
203
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
193
|
requirements:
|
205
194
|
- - ">="
|
206
195
|
- !ruby/object:Gem::Version
|
207
196
|
version: '0'
|
208
197
|
requirements: []
|
209
|
-
rubygems_version: 3.
|
210
|
-
signing_key:
|
198
|
+
rubygems_version: 3.6.6
|
211
199
|
specification_version: 4
|
212
200
|
summary: Blacklight IIIF Search plugin
|
213
201
|
test_files:
|