blacklight_iiif_search 2.1.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: