blacklight_iiif_search 2.1.0 → 3.0.0

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: 47f037fe96939a365bf695a81e1a11876b0fe4e6756e2c7cee7a7aaa23ef07df
4
+ data.tar.gz: be3140c6993352e0dfae2e5f8f014b6a70aea3fa9f9b39311d0bd171cf2bcda8
5
5
  SHA512:
6
- metadata.gz: c62ff646af27bc6ea4a76d91f6863ea866c960b140ce3a8df7c2556e24792ed3398c913e4ce65367d957971b3a44793a1961932a4b29c651cbb7cca71a09511f
7
- data.tar.gz: 626f89bb255bb7e431f02b7c198ca0c36bcefcbeec595841701db515c4e4e6217aeabae8f7adbe4d17e698b9b29256ea185e2add6bc8b24c0e6e55e6c8a30047
6
+ metadata.gz: a2fc141a9539fdd448c531ef69d8d93fc72919832dd256cdc5a988a7e3360f0241d4cde8ade9b7f4e800972e8288bc87109d3e2ad39f737cc563db11989e3b1e
7
+ data.tar.gz: 2c4c822c8304d444b1f0533153dbe49a9a07fb8b995f97e33bdeb72b501b06e4eadf72805ed540b6870847b074be8a6fc1658980f2e37200f6593e189aa0ec66
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.0'
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,14 @@
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.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eben English
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-23 00:00:00.000000000 Z
11
+ date: 2024-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,34 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6'
19
+ version: '6.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.3'
22
+ version: '8'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '6'
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.3'
32
+ version: '8'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: blacklight
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '7.0'
39
+ version: '8.0'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '7.0'
46
+ version: '8.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: iiif-presentation
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -76,16 +76,22 @@ dependencies:
76
76
  name: rspec-rails
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '3.0'
81
+ version: '6.1'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '8'
82
85
  type: :development
83
86
  prerelease: false
84
87
  version_requirements: !ruby/object:Gem::Requirement
85
88
  requirements:
86
- - - "~>"
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '6.1'
92
+ - - "<"
87
93
  - !ruby/object:Gem::Version
88
- version: '3.0'
94
+ version: '8'
89
95
  - !ruby/object:Gem::Dependency
90
96
  name: solr_wrapper
91
97
  requirement: !ruby/object:Gem::Requirement
@@ -134,14 +140,14 @@ dependencies:
134
140
  requirements:
135
141
  - - "~>"
136
142
  - !ruby/object:Gem::Version
137
- version: 4.0.0
143
+ version: '5.0'
138
144
  type: :development
139
145
  prerelease: false
140
146
  version_requirements: !ruby/object:Gem::Requirement
141
147
  requirements:
142
148
  - - "~>"
143
149
  - !ruby/object:Gem::Version
144
- version: 4.0.0
150
+ version: '5.0'
145
151
  description: Blacklight IIIF Search plugin
146
152
  email:
147
153
  - eenglish@bpl.org
@@ -169,7 +175,6 @@ files:
169
175
  - lib/generators/blacklight_iiif_search/routes_generator.rb
170
176
  - lib/generators/blacklight_iiif_search/solr_generator.rb
171
177
  - 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
178
  - lib/generators/blacklight_iiif_search/templates/solr/lib/tokenizing-suggest-v1.0.1.jar
174
179
  - lib/railties/blacklight_iiif_search.rake
175
180
  - spec/controllers/catalog_controller_spec.rb
@@ -191,7 +196,7 @@ licenses:
191
196
  metadata:
192
197
  homepage_uri: https://github.com/boston-library/blacklight_iiif_search
193
198
  source_code_uri: https://github.com/boston-library/blacklight_iiif_search
194
- post_install_message:
199
+ post_install_message:
195
200
  rdoc_options: []
196
201
  require_paths:
197
202
  - lib
@@ -199,15 +204,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
199
204
  requirements:
200
205
  - - ">="
201
206
  - !ruby/object:Gem::Version
202
- version: '0'
207
+ version: '2.7'
203
208
  required_rubygems_version: !ruby/object:Gem::Requirement
204
209
  requirements:
205
210
  - - ">="
206
211
  - !ruby/object:Gem::Version
207
212
  version: '0'
208
213
  requirements: []
209
- rubygems_version: 3.2.33
210
- signing_key:
214
+ rubygems_version: 3.3.27
215
+ signing_key:
211
216
  specification_version: 4
212
217
  summary: Blacklight IIIF Search plugin
213
218
  test_files: