blacklight-marc 6.2.0 → 7.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -1
  3. data/Gemfile +7 -0
  4. data/README.md +28 -7
  5. data/Rakefile +0 -2
  6. data/app/assets/stylesheets/blacklight_marc.scss +4 -6
  7. data/app/helpers/blacklight_marc_helper.rb +2 -1
  8. data/app/models/concerns/blacklight/solr/document/marc.rb +13 -12
  9. data/app/models/concerns/blacklight/solr/document/marc_export.rb +53 -50
  10. data/app/views/bookmarks/_endnote.html.erb +1 -1
  11. data/app/views/bookmarks/_refworks.html.erb +1 -1
  12. data/app/views/catalog/_marc_view.html.erb +4 -4
  13. data/app/views/catalog/endnote.endnote.erb +1 -1
  14. data/app/views/catalog/librarian_view.html.erb +7 -4
  15. data/blacklight-marc.gemspec +4 -4
  16. data/config/routes.rb +1 -1
  17. data/lib/blacklight/marc/catalog.rb +9 -15
  18. data/lib/blacklight/marc/indexer.rb +9 -39
  19. data/lib/blacklight/marc/indexer/formats.rb +1 -1
  20. data/lib/blacklight/marc/routes.rb +2 -39
  21. data/lib/blacklight/marc/routes/marc_viewable.rb +20 -0
  22. data/lib/blacklight/marc/version.rb +1 -1
  23. data/lib/generators/blacklight/marc/install_generator.rb +15 -8
  24. data/lib/generators/blacklight/marc/templates/app/models/marc_indexer.rb +57 -57
  25. data/lib/generators/blacklight/marc/templates/config/translation_maps/callnumber_map.properties +149 -11
  26. data/lib/railties/solr_marc.rake +33 -33
  27. data/solr/conf/schema.xml +325 -570
  28. data/solr/conf/solrconfig.xml +78 -294
  29. data/spec/controllers/catalog_controller_spec.rb +11 -6
  30. data/spec/features/bookmarks_spec.rb +2 -1
  31. data/spec/features/search_formats_spec.rb +3 -3
  32. data/spec/integration/solr_document_spec.rb +19 -19
  33. data/spec/lib/blacklight_solr_document_marc_spec.rb +7 -7
  34. data/spec/lib/indexer/dewey_spec.rb +4 -4
  35. data/spec/lib/indexer/formats_spec.rb +1 -1
  36. data/spec/lib/marc_export_spec.rb +46 -46
  37. data/spec/lib/tasks/solr_marc_task_spec.rb +7 -7
  38. data/spec/lib/traject_indexer_spec.rb +6 -2
  39. data/spec/routing/routes_spec.rb +0 -6
  40. data/spec/test_app_templates/Gemfile.extra +2 -0
  41. data/spec/test_app_templates/lib/generators/test_app_generator.rb +14 -13
  42. data/spec/views/bookmarks/_endnote.html.erb_spec.rb +16 -6
  43. data/spec/views/bookmarks/_refworks.html.erb_spec.rb +17 -7
  44. data/spec/views/catalog/index.atom.builder_spec.rb +12 -17
  45. data/test_support/config/translation_maps/test_formats.properties +3 -1
  46. metadata +14 -13
  47. data/app/helpers/blacklight_bookmarks_helper.rb +0 -3
  48. data/solr/sample_solr_documents.yml +0 -2692
@@ -1,229 +1,91 @@
1
1
  <?xml version="1.0" encoding="UTF-8" ?>
2
- <!--
3
- Licensed to the Apache Software Foundation (ASF) under one or more
4
- contributor license agreements. See the NOTICE file distributed with
5
- this work for additional information regarding copyright ownership.
6
- The ASF licenses this file to You under the Apache License, Version 2.0
7
- (the "License"); you may not use this file except in compliance with
8
- the License. You may obtain a copy of the License at
9
-
10
- http://www.apache.org/licenses/LICENSE-2.0
11
-
12
- Unless required by applicable law or agreed to in writing, software
13
- distributed under the License is distributed on an "AS IS" BASIS,
14
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- See the License for the specific language governing permissions and
16
- limitations under the License.
17
- -->
18
-
19
- <!--
20
- This is a stripped down config file used for a simple example...
21
- It is *not* a good example to work from.
22
- -->
23
2
  <config>
24
-
25
- <!-- Controls what version of Lucene various components of Solr
26
- adhere to. Generally, you want to use the latest version to
27
- get all bug fixes and improvements. It is highly recommended
28
- that you fully re-index after changing this setting as it can
29
- affect both how text is indexed and queried.
30
- -->
31
- <luceneMatchVersion>5.0.0</luceneMatchVersion>
32
-
33
- <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" />
34
- <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" />
3
+ <!-- NOTE: various comments and unused configuration possibilities have been purged
4
+ from this file. Please refer to http://wiki.apache.org/solr/SolrConfigXml,
5
+ as well as the default solrconfig file included with Solr -->
35
6
 
36
- <directoryFactory name="DirectoryFactory"
37
- class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}">
38
- </directoryFactory>
7
+ <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
39
8
 
40
- <codecFactory class="solr.SchemaCodecFactory"/>
9
+ <luceneMatchVersion>6.1.0</luceneMatchVersion>
41
10
 
42
- <schemaFactory class="ClassicIndexSchemaFactory"/>
11
+ <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>
43
12
 
13
+ <updateHandler class="solr.DirectUpdateHandler2">
14
+ <updateLog>
15
+ <str name="dir">${solr.core0.data.dir:}</str>
16
+ </updateLog>
17
+ </updateHandler>
44
18
 
45
- <dataDir>${solr.blacklight-core.data.dir:}</dataDir>
46
-
47
- <requestDispatcher handleSelect="true" >
48
- <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
49
- </requestDispatcher>
50
-
51
- <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
52
-
53
- <!-- config for the admin interface -->
54
- <admin>
55
- <defaultQuery>*:*</defaultQuery>
56
- </admin>
57
-
58
- <!-- SearchHandler
19
+ <!-- solr lib dirs -->
20
+ <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" />
21
+ <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" />
59
22
 
60
- http://wiki.apache.org/solr/SearchHandler
23
+ <dataDir>${solr.data.dir:}</dataDir>
61
24
 
62
- For processing Search Queries, the primary Request Handler
63
- provided with Solr is "SearchHandler" It delegates to a sequent
64
- of SearchComponents (see below) and supports distributed
65
- queries across multiple shards
66
- -->
67
25
  <requestHandler name="search" class="solr.SearchHandler" default="true">
68
26
  <!-- default values for query parameters can be specified, these
69
27
  will be overridden by parameters in the request
70
28
  -->
71
29
  <lst name="defaults">
72
- <str name="defType">dismax</str>
30
+ <str name="defType">edismax</str>
73
31
  <str name="echoParams">explicit</str>
74
- <int name="rows">10</int>
75
-
76
32
  <str name="q.alt">*:*</str>
77
33
  <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
78
-
34
+ <int name="qs">1</int>
35
+ <int name="ps">2</int>
36
+ <float name="tie">0.01</float>
79
37
  <!-- this qf and pf are used by default, if not otherwise specified by
80
38
  client. The default blacklight_config will use these for the
81
- "keywords" search. See the author_qf/author_pf, title_qf, etc
39
+ "keywords" search. See the author_qf/author_pf, title_qf, etc
82
40
  below, which the default blacklight_config will specify for
83
41
  those searches. You may also be interested in:
84
42
  http://wiki.apache.org/solr/LocalParams
85
43
  -->
44
+ <str name="qf">
45
+ id
46
+ full_title_tsim
47
+ short_title_tsim
48
+ alternative_title_tsim
49
+ active_fedora_model_ssi
50
+ title_tsim
51
+ author_tsim
52
+ subject_tsim
53
+ all_text_timv
54
+ </str>
55
+ <str name="pf">
56
+ all_text_timv^10
57
+ </str>
86
58
 
87
- <str name="qf">
88
- title_unstem_search^100000
89
- subtitle_unstem_search^50000
90
- title_t^25000
91
- subtitle_t^10000
92
- title_addl_unstem_search^5000
93
- title_addl_t^2500
94
- title_added_entry_unstem_search^1500
95
- title_added_entry_t^1250
96
- subject_topic_unstem_search^1000
97
- subject_unstem_search^750
98
- subject_topic_facet^625
99
- subject_t^500
100
- author_unstem_search^250
101
- author_addl_unstem_search^250
102
- author_t^100
103
- author_addl_t^50
104
- subject_addl_unstem_search^250
105
- subject_addl_t^50
106
- title_series_unstem_search^25
107
- title_series_t^10
108
- isbn_t
109
- text
110
- </str>
111
- <str name="pf">
112
- title_unstem_search^1000000
113
- subtitle_unstem_search^500000
114
- title_t^250000
115
- subtitle_t^100000
116
- title_addl_unstem_search^50000
117
- title_addl_t^25000
118
- title_added_entry_unstem_search^15000
119
- title_added_entry_t^12500
120
- subject_topic_unstem_search^10000
121
- subject_unstem_search^7500
122
- subject_topic_facet^6250
123
- subject_t^5000
124
- author_unstem_search^2500
125
- author_addl_unstem_search^2500
126
- author_t^1000
127
- author_addl_t^500
128
- subject_addl_unstem_search^2500
129
- subject_addl_t^500
130
- title_series_unstem_search^250
131
- title_series_t^100
132
- text^10
133
- </str>
134
59
  <str name="author_qf">
135
- author_unstem_search^200
136
- author_addl_unstem_search^50
137
- author_t^20
138
- author_addl_t
60
+ author_tsim
139
61
  </str>
140
62
  <str name="author_pf">
141
- author_unstem_search^2000
142
- author_addl_unstem_search^500
143
- author_t^200
144
- author_addl_t^10
145
63
  </str>
146
64
  <str name="title_qf">
147
- title_unstem_search^50000
148
- subtitle_unstem_search^25000
149
- title_addl_unstem_search^10000
150
- title_t^5000
151
- subtitle_t^2500
152
- title_addl_t^100
153
- title_added_entry_unstem_search^50
154
- title_added_entry_t^10
155
- title_series_unstem_search^5
156
- title_series_t
65
+ title_tsim
66
+ full_title_tsim
67
+ short_title_tsim
68
+ alternative_title_tsim
157
69
  </str>
158
70
  <str name="title_pf">
159
- title_unstem_search^500000
160
- subtitle_unstem_search^250000
161
- title_addl_unstem_search^100000
162
- title_t^50000
163
- subtitle_t^25000
164
- title_addl_t^1000
165
- title_added_entry_unstem_search^500
166
- title_added_entry_t^100
167
- title_series_t^50
168
- title_series_unstem_search^10
169
71
  </str>
170
72
  <str name="subject_qf">
171
- subject_topic_unstem_search^200
172
- subject_unstem_search^125
173
- subject_topic_facet^100
174
- subject_t^50
175
- subject_addl_unstem_search^10
176
- subject_addl_t
73
+ subject_tsim
177
74
  </str>
178
75
  <str name="subject_pf">
179
- subject_topic_unstem_search^2000
180
- subject_unstem_search^1250
181
- subject_t^1000
182
- subject_topic_facet^500
183
- subject_addl_unstem_search^100
184
- subject_addl_t^10
185
76
  </str>
186
-
187
- <int name="ps">3</int>
188
- <float name="tie">0.01</float>
189
77
 
190
- <!-- NOT using marc_display because it is large and will slow things down for search results -->
191
78
  <str name="fl">
192
- id,
193
- score,
194
- author_display,
195
- author_vern_display,
196
- format,
197
- isbn_t,
198
- language_facet,
199
- lc_callnum_display,
200
- material_type_display,
201
- published_display,
202
- published_vern_display,
203
- pub_date,
204
- title_display,
205
- title_vern_display,
206
- subject_topic_facet,
207
- subject_geo_facet,
208
- subject_era_facet,
209
- subtitle_display,
210
- subtitle_vern_display,
211
- url_fulltext_display,
212
- url_suppl_display,
79
+ *,
80
+ score
213
81
  </str>
214
82
 
215
83
  <str name="facet">true</str>
216
84
  <str name="facet.mincount">1</str>
217
- <str name="facet.field">format</str>
218
- <str name="facet.field">lc_1letter_facet</str>
219
- <str name="facet.field">lc_alpha_facet</str>
220
- <str name="facet.field">lc_b4cutter_facet</str>
221
- <str name="facet.field">language_facet</str>
222
- <str name="facet.field">pub_date</str>
223
- <str name="facet.field">subject_era_facet</str>
224
- <str name="facet.field">subject_geo_facet</str>
225
- <str name="facet.field">subject_topic_facet</str>
226
-
85
+ <str name="facet.limit">10</str>
86
+ <str name="facet.field">active_fedora_model_ssi</str>
87
+ <str name="facet.field">subject_ssim</str>
88
+
227
89
  <str name="spellcheck">true</str>
228
90
  <str name="spellcheck.dictionary">default</str>
229
91
  <str name="spellcheck.onlyMorePopular">true</str>
@@ -232,91 +94,46 @@
232
94
  <str name="spellcheck.count">5</str>
233
95
 
234
96
  </lst>
235
- <!-- In addition to defaults, "appends" params can be specified
236
- to identify values which should be appended to the list of
237
- multi-val params from the query (or the existing "defaults").
238
- -->
239
- <!-- In this example, the param "fq=instock:true" would be appended to
240
- any query time fq params the user may specify, as a mechanism for
241
- partitioning the index, independent of any user selected filtering
242
- that may also be desired (perhaps as a result of faceted searching).
243
-
244
- NOTE: there is *absolutely* nothing a client can do to prevent these
245
- "appends" values from being used, so don't use this mechanism
246
- unless you are sure you always want it.
247
- -->
248
- <!--
249
- <lst name="appends">
250
- <str name="fq">inStock:true</str>
251
- </lst>
252
- -->
253
- <!-- "invariants" are a way of letting the Solr maintainer lock down
254
- the options available to Solr clients. Any params values
255
- specified here are used regardless of what values may be specified
256
- in either the query, the "defaults", or the "appends" params.
257
-
258
- In this example, the facet.field and facet.query params would
259
- be fixed, limiting the facets clients can use. Faceting is
260
- not turned on by default - but if the client does specify
261
- facet=true in the request, these are the only facets they
262
- will be able to see counts for; regardless of what other
263
- facet.field or facet.query params they may specify.
264
-
265
- NOTE: there is *absolutely* nothing a client can do to prevent these
266
- "invariants" values from being used, so don't use this mechanism
267
- unless you are sure you always want it.
268
- -->
269
- <!--
270
- <lst name="invariants">
271
- <str name="facet.field">cat</str>
272
- <str name="facet.field">manu_exact</str>
273
- <str name="facet.query">price:[* TO 500]</str>
274
- <str name="facet.query">price:[500 TO *]</str>
275
- </lst>
276
- -->
277
- <!-- If the default list of SearchComponents is not desired, that
278
- list can either be overridden completely, or components can be
279
- prepended or appended to the default list. (see below)
280
- -->
281
- <!--
282
- <arr name="components">
283
- <str>nameOfCustomComponent1</str>
284
- <str>nameOfCustomComponent2</str>
285
- </arr>
286
- -->
287
97
  <arr name="last-components">
288
98
  <str>spellcheck</str>
289
99
  </arr>
290
-
291
100
  </requestHandler>
292
101
 
293
- <!-- for requests to get a single document; use id=666 instead of q=id:666 -->
294
- <requestHandler name="document" class="solr.SearchHandler" >
102
+ <requestHandler name="permissions" class="solr.SearchHandler" >
295
103
  <lst name="defaults">
104
+ <str name="facet">off</str>
296
105
  <str name="echoParams">all</str>
297
- <str name="fl">*</str>
298
106
  <str name="rows">1</str>
299
- <str name="q">{!term f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
107
+ <str name="q">{!raw f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
108
+ <str name="fl">
109
+ id,
110
+ access_ssim,
111
+ discover_access_group_ssim,discover_access_person_ssim,
112
+ read_access_group_ssim,read_access_person_ssim,
113
+ edit_access_group_ssim,edit_access_person_ssim,
114
+ depositor_ti,
115
+ embargo_release_date_dtsi
116
+ inheritable_access_ssim,
117
+ inheritable_discover_access_group_ssim,inheritable_discover_access_person_ssim,
118
+ inheritable_read_access_group_ssim,inheritable_read_access_person_ssim,
119
+ inheritable_edit_access_group_ssim,inheritable_edit_access_person_ssim,
120
+ inheritable_embargo_release_date_dtsi
121
+ </str>
300
122
  </lst>
301
123
  </requestHandler>
302
124
 
303
- <!-- Spell Check
125
+ <requestHandler name="standard" class="solr.SearchHandler">
126
+ <lst name="defaults">
127
+ <str name="echoParams">explicit</str>
128
+ <str name="defType">lucene</str>
129
+ </lst>
130
+ </requestHandler>
304
131
 
305
- The spell check component can return a list of alternative spelling
306
- suggestions.
307
132
 
308
- http://wiki.apache.org/solr/SpellCheckComponent
309
- -->
310
133
  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
311
-
312
134
  <str name="queryAnalyzerFieldType">textSpell</str>
313
-
314
- <!-- Multiple "Spell Checkers" can be declared and used by this
315
- component
316
- -->
317
-
318
- <!-- a spellchecker built from a field of the main index, and
319
- written to disk
135
+ <!-- Multiple "Spell Checkers" can be declared and used by this component
136
+ (e.g. for title_spell field)
320
137
  -->
321
138
  <lst name="spellchecker">
322
139
  <str name="name">default</str>
@@ -345,45 +162,6 @@
345
162
  <str name="accuracy">0.7</str>
346
163
  <str name="buildOnOptimize">true</str>
347
164
  </lst>
348
-
349
- <!-- a spellchecker that uses a different distance measure -->
350
- <!--
351
- <lst name="spellchecker">
352
- <str name="name">jarowinkler</str>
353
- <str name="field">spell</str>
354
- <str name="distanceMeasure">
355
- org.apache.lucene.search.spell.JaroWinklerDistance
356
- </str>
357
- <str name="spellcheckIndexDir">spellcheckerJaro</str>
358
- </lst>
359
- -->
360
-
361
- <!-- a spellchecker that use an alternate comparator
362
-
363
- comparatorClass be one of:
364
- 1. score (default)
365
- 2. freq (Frequency first, then score)
366
- 3. A fully qualified class name
367
- -->
368
- <!--
369
- <lst name="spellchecker">
370
- <str name="name">freq</str>
371
- <str name="field">lowerfilt</str>
372
- <str name="spellcheckIndexDir">spellcheckerFreq</str>
373
- <str name="comparatorClass">freq</str>
374
- <str name="buildOnCommit">true</str>
375
- -->
376
-
377
- <!-- A spellchecker that reads the list of words from a file -->
378
- <!--
379
- <lst name="spellchecker">
380
- <str name="classname">solr.FileBasedSpellChecker</str>
381
- <str name="name">file</str>
382
- <str name="sourceLocation">spellings.txt</str>
383
- <str name="characterEncoding">UTF-8</str>
384
- <str name="spellcheckIndexDir">spellcheckerFile</str>
385
- </lst>
386
- -->
387
165
  </searchComponent>
388
166
 
389
167
  <searchComponent name="suggest" class="solr.SuggestComponent">
@@ -407,5 +185,11 @@
407
185
  </arr>
408
186
  </requestHandler>
409
187
 
410
- </config>
188
+ <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
189
+
190
+ <requestDispatcher handleSelect="true" >
191
+ <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048" />
192
+ </requestDispatcher>
411
193
 
194
+ <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
195
+ </config>
@@ -2,22 +2,27 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe CatalogController do
5
+ before do
6
+ SolrDocument.use_extension( Blacklight::Solr::Document::Marc )
7
+ end
5
8
  describe "endnote" do
6
- before do
7
- SolrDocument.use_extension( Blacklight::Solr::Document::Marc )
8
- end
9
9
  render_views
10
10
  it "should render endnote" do
11
- get :endnote, id: '86207417', format: 'endnote'
11
+ get :show, params: { id: '86207417', format: 'endnote' }
12
12
  expect(response.body).to eq "%0 Generic
13
13
  %A Finkel, Chaim Jacob.
14
14
  %C Yerushalayim :
15
15
  %D c1984.
16
16
  %I Devir,
17
17
  %@ 9650101373
18
- %T Shodede-yam Yehudiyim : sipurim mafliʼim ha-mevusasim ʻal ʻuvdot hisṭoriyot /\n\n\n"
18
+ %T Shodede-yam Yehudiyim : sipurim mafliʼim ha-mevusasim ʻal ʻuvdot hisṭoriyot /\n"
19
19
  end
20
20
  end
21
21
 
22
-
22
+ describe "#librarian_view" do
23
+ it "is successful" do
24
+ get :librarian_view, params: { id: '86207417' }
25
+ expect(response).to be_success
26
+ end
27
+ end
23
28
  end