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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1db4fcea6de6ad4fbe6c0e5dc49eeb478e472c7fbe2c688ddf30b63d6530369
4
- data.tar.gz: 18b6e6b81eb24824db80501def12c7f61c41e0f3ab45971c9e1bd6240b37a3b3
3
+ metadata.gz: ed2efa90d705303336350956363bfe81a1fdf4e91ed16ae4201499467d529ad2
4
+ data.tar.gz: e4c36bac0054843e5a0a3e2d699e3bf06f286bffd00d0ecfa4f8ba886e4484b6
5
5
  SHA512:
6
- metadata.gz: c62ff646af27bc6ea4a76d91f6863ea866c960b140ce3a8df7c2556e24792ed3398c913e4ce65367d957971b3a44793a1961932a4b29c651cbb7cca71a09511f
7
- data.tar.gz: 626f89bb255bb7e431f02b7c198ca0c36bcefcbeec595841701db515c4e4e6217aeabae8f7adbe4d17e698b9b29256ea185e2add6bc8b24c0e6e55e6c8a30047
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
- FileUtils.cp File.join(__dir__, 'lib', 'generators', 'blacklight_iiif_search', 'templates', 'solr', 'lib', 'tokenizing-suggest-v1.0.1.jar'),
40
- File.join(solr.instance_dir, 'contrib')
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
- _parent_response, @parent_document = search_service.fetch(params[:solr_document_id])
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, _document_list = iiif_search_service.search_results
20
- iiif_search_response = IiifSearchResponse.new(@response,
21
- @parent_document,
22
- self)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BlacklightIiifSearch
4
- VERSION = '2.1.0'
4
+ VERSION = '3.0.1'
5
5
  end
@@ -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.with_clean_env do
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 CommonwealthVlrEngine to the routes
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
- <!-- solr-tokenizing_suggester is necessary to return single terms from the suggester -->
20
- <lib dir=\"${solr.install.dir:../../../..}/contrib\" regex=\"tokenizing-suggest-v1.0.1.jar\" />\n
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\">edu.stanford.dlss.search.suggest.analyzing.TokenizingLookupFactory</str>
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
@@ -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)[1] }
20
- let(:page_document) { controller.search_service.fetch(page_id)[1] }
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.first }
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(/\A#{suggest_query_term}/)).to be_truthy
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(/\A#{suggest_query_term}/)).to be_truthy
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: 2.1.0
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: 2024-08-23 00:00:00.000000000 Z
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: '7.3'
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: '7.3'
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: '7.0'
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: '7.0'
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: '3.0'
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: '3.0'
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: 4.0.0
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: 4.0.0
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: '0'
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.2.33
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: