blacklight-citeproc 0.0.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -0
  3. data/.github/workflows/test.yml +25 -0
  4. data/.internal_test_app/solr/conf/_rest_managed.json +3 -0
  5. data/.internal_test_app/solr/conf/admin-extra.html +31 -0
  6. data/.internal_test_app/solr/conf/currency.xml +67 -0
  7. data/.internal_test_app/solr/conf/email_url_types.txt +2 -0
  8. data/.internal_test_app/solr/conf/lang/contractions_ca.txt +8 -0
  9. data/.internal_test_app/solr/conf/lang/contractions_fr.txt +15 -0
  10. data/.internal_test_app/solr/conf/lang/contractions_ga.txt +5 -0
  11. data/.internal_test_app/solr/conf/lang/contractions_it.txt +23 -0
  12. data/.internal_test_app/solr/conf/lang/hyphenations_ga.txt +5 -0
  13. data/.internal_test_app/solr/conf/lang/stemdict_nl.txt +6 -0
  14. data/.internal_test_app/solr/conf/lang/stoptags_ja.txt +420 -0
  15. data/.internal_test_app/solr/conf/lang/stopwords_ar.txt +125 -0
  16. data/.internal_test_app/solr/conf/lang/stopwords_bg.txt +193 -0
  17. data/.internal_test_app/solr/conf/lang/stopwords_ca.txt +220 -0
  18. data/.internal_test_app/solr/conf/lang/stopwords_cz.txt +172 -0
  19. data/.internal_test_app/solr/conf/lang/stopwords_da.txt +110 -0
  20. data/.internal_test_app/solr/conf/lang/stopwords_de.txt +294 -0
  21. data/.internal_test_app/solr/conf/lang/stopwords_el.txt +78 -0
  22. data/.internal_test_app/solr/conf/lang/stopwords_en.txt +54 -0
  23. data/.internal_test_app/solr/conf/lang/stopwords_es.txt +356 -0
  24. data/.internal_test_app/solr/conf/lang/stopwords_eu.txt +99 -0
  25. data/.internal_test_app/solr/conf/lang/stopwords_fa.txt +313 -0
  26. data/.internal_test_app/solr/conf/lang/stopwords_fi.txt +97 -0
  27. data/.internal_test_app/solr/conf/lang/stopwords_fr.txt +186 -0
  28. data/.internal_test_app/solr/conf/lang/stopwords_ga.txt +110 -0
  29. data/.internal_test_app/solr/conf/lang/stopwords_gl.txt +161 -0
  30. data/.internal_test_app/solr/conf/lang/stopwords_hi.txt +235 -0
  31. data/.internal_test_app/solr/conf/lang/stopwords_hu.txt +211 -0
  32. data/.internal_test_app/solr/conf/lang/stopwords_hy.txt +46 -0
  33. data/.internal_test_app/solr/conf/lang/stopwords_id.txt +359 -0
  34. data/.internal_test_app/solr/conf/lang/stopwords_it.txt +303 -0
  35. data/.internal_test_app/solr/conf/lang/stopwords_ja.txt +127 -0
  36. data/.internal_test_app/solr/conf/lang/stopwords_lv.txt +172 -0
  37. data/.internal_test_app/solr/conf/lang/stopwords_nl.txt +119 -0
  38. data/.internal_test_app/solr/conf/lang/stopwords_no.txt +194 -0
  39. data/.internal_test_app/solr/conf/lang/stopwords_pt.txt +253 -0
  40. data/.internal_test_app/solr/conf/lang/stopwords_ro.txt +233 -0
  41. data/.internal_test_app/solr/conf/lang/stopwords_ru.txt +243 -0
  42. data/.internal_test_app/solr/conf/lang/stopwords_sv.txt +133 -0
  43. data/.internal_test_app/solr/conf/lang/stopwords_th.txt +119 -0
  44. data/.internal_test_app/solr/conf/lang/stopwords_tr.txt +212 -0
  45. data/.internal_test_app/solr/conf/lang/userdict_ja.txt +29 -0
  46. data/.internal_test_app/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  47. data/.internal_test_app/solr/conf/protwords.txt +21 -0
  48. data/.internal_test_app/solr/conf/schema.xml +408 -0
  49. data/.internal_test_app/solr/conf/scripts.conf +24 -0
  50. data/.internal_test_app/solr/conf/solrconfig.xml +1287 -0
  51. data/.internal_test_app/solr/conf/spellings.txt +2 -0
  52. data/.internal_test_app/solr/conf/stopwords.txt +14 -0
  53. data/.internal_test_app/solr/conf/stopwords_en.txt +58 -0
  54. data/.internal_test_app/solr/conf/synonyms.txt +13 -0
  55. data/.internal_test_app/solr/conf/update-script.js +115 -0
  56. data/.internal_test_app/solr/conf/velocity/browse.vm +32 -0
  57. data/.internal_test_app/solr/conf/velocity/dropit.js +0 -0
  58. data/.internal_test_app/solr/conf/velocity/facet_doc_type.vm +2 -0
  59. data/.internal_test_app/solr/conf/velocity/facet_text_shingles.vm +12 -0
  60. data/.internal_test_app/solr/conf/velocity/facets.vm +24 -0
  61. data/.internal_test_app/solr/conf/velocity/footer.vm +29 -0
  62. data/.internal_test_app/solr/conf/velocity/head.vm +290 -0
  63. data/.internal_test_app/solr/conf/velocity/hit.vm +77 -0
  64. data/.internal_test_app/solr/conf/velocity/img/english_640.png +0 -0
  65. data/.internal_test_app/solr/conf/velocity/img/france_640.png +0 -0
  66. data/.internal_test_app/solr/conf/velocity/img/germany_640.png +0 -0
  67. data/.internal_test_app/solr/conf/velocity/img/globe_256.png +0 -0
  68. data/.internal_test_app/solr/conf/velocity/jquery.tx3-tag-cloud.js +0 -0
  69. data/.internal_test_app/solr/conf/velocity/js/dropit.js +97 -0
  70. data/.internal_test_app/solr/conf/velocity/js/jquery.autocomplete.js +763 -0
  71. data/.internal_test_app/solr/conf/velocity/js/jquery.tx3-tag-cloud.js +70 -0
  72. data/.internal_test_app/solr/conf/velocity/layout.vm +42 -0
  73. data/.internal_test_app/solr/conf/velocity/macros.vm +16 -0
  74. data/.internal_test_app/solr/conf/velocity/mime_type_lists.vm +68 -0
  75. data/.internal_test_app/solr/conf/velocity/results.vm +20 -0
  76. data/.internal_test_app/solr/conf/velocity/results_list.vm +21 -0
  77. data/.internal_test_app/solr/conf/xslt/example.xsl +132 -0
  78. data/.internal_test_app/solr/conf/xslt/example_atom.xsl +67 -0
  79. data/.internal_test_app/solr/conf/xslt/example_rss.xsl +66 -0
  80. data/.internal_test_app/solr/conf/xslt/luke.xsl +337 -0
  81. data/.rubocop.yml +4 -0
  82. data/.rubocop_todo.yml +40 -0
  83. data/Dockerfile +43 -0
  84. data/Gemfile +5 -0
  85. data/LICENSE.md +21 -0
  86. data/README.md +3 -0
  87. data/Rakefile +8 -0
  88. data/app/controllers/blacklight/citeproc/citation_controller.rb +45 -40
  89. data/app/models/concerns/blacklight/document/bibtex.rb +37 -35
  90. data/bin/entrypoint.sh +8 -0
  91. data/blacklight-citeproc.gemspec +19 -19
  92. data/config/routes.rb +2 -0
  93. data/docker-compose.yml +33 -0
  94. data/lib/blacklight/citeproc/engine.rb +2 -0
  95. data/lib/blacklight/citeproc/version.rb +3 -1
  96. data/lib/blacklight/citeproc.rb +2 -0
  97. data/lib/generators/blacklight/citeproc/install_generator.rb +20 -15
  98. metadata +119 -40
@@ -0,0 +1,1287 @@
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
+ For more details about configurations options that may appear in
21
+ this file, see http://wiki.apache.org/solr/SolrConfigXml.
22
+ -->
23
+ <config>
24
+ <!-- In all configuration below, a prefix of "solr." for class names
25
+ is an alias that causes solr to search appropriate packages,
26
+ including org.apache.solr.(search|update|request|core|analysis)
27
+
28
+ You may also specify a fully qualified Java classname if you
29
+ have your own custom plugins.
30
+ -->
31
+
32
+ <!-- Controls what version of Lucene various components of Solr
33
+ adhere to. Generally, you want to use the latest version to
34
+ get all bug fixes and improvements. It is highly recommended
35
+ that you fully re-index after changing this setting as it can
36
+ affect both how text is indexed and queried.
37
+ -->
38
+ <luceneMatchVersion>8.5.1</luceneMatchVersion>
39
+
40
+ <!-- <lib/> directives can be used to instruct Solr to load any Jars
41
+ identified and use them to resolve any "plugins" specified in
42
+ your solrconfig.xml or schema.xml (ie: Analyzers, Request
43
+ Handlers, etc...).
44
+
45
+ All directories and paths are resolved relative to the
46
+ instanceDir.
47
+
48
+ Please note that <lib/> directives are processed in the order
49
+ that they appear in your solrconfig.xml file, and are "stacked"
50
+ on top of each other when building a ClassLoader - so if you have
51
+ plugin jars with dependencies on other jars, the "lower level"
52
+ dependency jars should be loaded first.
53
+
54
+ If a "./lib" directory exists in your instanceDir, all files
55
+ found in it are included as if you had used the following
56
+ syntax...
57
+
58
+ <lib dir="./lib" />
59
+ -->
60
+
61
+ <!-- A 'dir' option by itself adds any files found in the directory
62
+ to the classpath, this is useful for including all jars in a
63
+ directory.
64
+
65
+ When a 'regex' is specified in addition to a 'dir', only the
66
+ files in that directory which completely match the regex
67
+ (anchored on both ends) will be included.
68
+
69
+ If a 'dir' option (with or without a regex) is used and nothing
70
+ is found that matches, a warning will be logged.
71
+
72
+ The examples below can be used to load some solr-contribs along
73
+ with their external dependencies.
74
+ -->
75
+ <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
76
+ <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
77
+
78
+ <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
79
+ <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
80
+
81
+ <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
82
+ <!-- browse-resources must come before solr-velocity JAR in order to override localized resources -->
83
+ <lib path="${solr.install.dir:../../../..}/example/files/browse-resources"/>
84
+ <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
85
+ <!-- an exact 'path' can be used instead of a 'dir' to specify a
86
+ specific jar file. This will cause a serious error to be logged
87
+ if it can't be loaded.
88
+ -->
89
+ <!--
90
+ <lib path="../a-jar-that-does-not-exist.jar" />
91
+ -->
92
+
93
+ <!-- Data Directory
94
+
95
+ Used to specify an alternate directory to hold all index data
96
+ other than the default ./data under the Solr home. If
97
+ replication is in use, this should match the replication
98
+ configuration.
99
+ -->
100
+ <dataDir>${solr.data.dir:}</dataDir>
101
+
102
+
103
+ <!-- The DirectoryFactory to use for indexes.
104
+
105
+ solr.StandardDirectoryFactory is filesystem
106
+ based and tries to pick the best implementation for the current
107
+ JVM and platform. solr.NRTCachingDirectoryFactory, the default,
108
+ wraps solr.StandardDirectoryFactory and caches small files in memory
109
+ for better NRT performance.
110
+
111
+ One can force a particular implementation via solr.MMapDirectoryFactory,
112
+ solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
113
+
114
+ solr.RAMDirectoryFactory is memory based and not persistent.
115
+ -->
116
+ <directoryFactory name="DirectoryFactory"
117
+ class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
118
+
119
+ <!-- The CodecFactory for defining the format of the inverted index.
120
+ The default implementation is SchemaCodecFactory, which is the official Lucene
121
+ index format, but hooks into the schema to provide per-field customization of
122
+ the postings lists and per-document values in the fieldType element
123
+ (postingsFormat/docValuesFormat). Note that most of the alternative implementations
124
+ are experimental, so if you choose to customize the index format, it's a good
125
+ idea to convert back to the official format e.g. via IndexWriter.addIndexes(IndexReader)
126
+ before upgrading to a newer version to avoid unnecessary reindexing.
127
+ -->
128
+ <codecFactory class="solr.SchemaCodecFactory"/>
129
+
130
+ <schemaFactory class="ClassicIndexSchemaFactory"/>
131
+
132
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
133
+ Index Config - These settings control low-level behavior of indexing
134
+ Most example settings here show the default value, but are commented
135
+ out, to more easily see where customizations have been made.
136
+
137
+ Note: This replaces <indexDefaults> and <mainIndex> from older versions
138
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
139
+ <indexConfig>
140
+ <!-- maxFieldLength was removed in 4.0. To get similar behavior, include a
141
+ LimitTokenCountFilterFactory in your fieldType definition. E.g.
142
+ <filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="10000"/>
143
+ -->
144
+ <!-- Maximum time to wait for a write lock (ms) for an IndexWriter. Default: 1000 -->
145
+ <!-- <writeLockTimeout>1000</writeLockTimeout> -->
146
+
147
+ <!-- Expert: Enabling compound file will use less files for the index,
148
+ using fewer file descriptors on the expense of performance decrease.
149
+ Default in Lucene is "true". Default in Solr is "false" (since 3.6) -->
150
+ <!-- <useCompoundFile>false</useCompoundFile> -->
151
+
152
+ <!-- ramBufferSizeMB sets the amount of RAM that may be used by Lucene
153
+ indexing for buffering added documents and deletions before they are
154
+ flushed to the Directory.
155
+ maxBufferedDocs sets a limit on the number of documents buffered
156
+ before flushing.
157
+ If both ramBufferSizeMB and maxBufferedDocs is set, then
158
+ Lucene will flush based on whichever limit is hit first. -->
159
+ <!-- <ramBufferSizeMB>100</ramBufferSizeMB> -->
160
+ <!-- <maxBufferedDocs>1000</maxBufferedDocs> -->
161
+
162
+ <!-- Expert: Merge Policy
163
+ The Merge Policy in Lucene controls how merging of segments is done.
164
+ The default since Solr/Lucene 3.3 is TieredMergePolicy.
165
+ The default since Lucene 2.3 was the LogByteSizeMergePolicy,
166
+ Even older versions of Lucene used LogDocMergePolicy.
167
+ -->
168
+ <!--
169
+ <mergePolicyFactory class="solr.TieredMergePolicyFactory">
170
+ <int name="maxMergeAtOnce">10</int>
171
+ <int name="segmentsPerTier">10</int>
172
+ </mergePolicyFactory>
173
+ -->
174
+
175
+ <!-- Expert: Merge Scheduler
176
+ The Merge Scheduler in Lucene controls how merges are
177
+ performed. The ConcurrentMergeScheduler (Lucene 2.3 default)
178
+ can perform merges in the background using separate threads.
179
+ The SerialMergeScheduler (Lucene 2.2 default) does not.
180
+ -->
181
+ <!--
182
+ <mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>
183
+ -->
184
+
185
+ <!-- LockFactory
186
+
187
+ This option specifies which Lucene LockFactory implementation
188
+ to use.
189
+
190
+ single = SingleInstanceLockFactory - suggested for a
191
+ read-only index or when there is no possibility of
192
+ another process trying to modify the index.
193
+ native = NativeFSLockFactory - uses OS native file locking.
194
+ Do not use when multiple solr webapps in the same
195
+ JVM are attempting to share a single index.
196
+ simple = SimpleFSLockFactory - uses a plain file for locking
197
+
198
+ Defaults: 'native' is default for Solr3.6 and later, otherwise
199
+ 'simple' is the default
200
+
201
+ More details on the nuances of each LockFactory...
202
+ http://wiki.apache.org/lucene-java/AvailableLockFactories
203
+ -->
204
+ <lockType>${solr.lock.type:native}</lockType>
205
+
206
+ <!-- Commit Deletion Policy
207
+ Custom deletion policies can be specified here. The class must
208
+ implement org.apache.lucene.index.IndexDeletionPolicy.
209
+
210
+ The default Solr IndexDeletionPolicy implementation supports
211
+ deleting index commit points on number of commits, age of
212
+ commit point and optimized status.
213
+
214
+ The latest commit point should always be preserved regardless
215
+ of the criteria.
216
+ -->
217
+ <!--
218
+ <deletionPolicy class="solr.SolrDeletionPolicy">
219
+ -->
220
+ <!-- The number of commit points to be kept -->
221
+ <!-- <str name="maxCommitsToKeep">1</str> -->
222
+ <!-- The number of optimized commit points to be kept -->
223
+ <!-- <str name="maxOptimizedCommitsToKeep">0</str> -->
224
+ <!--
225
+ Delete all commit points once they have reached the given age.
226
+ Supports DateMathParser syntax e.g.
227
+ -->
228
+ <!--
229
+ <str name="maxCommitAge">30MINUTES</str>
230
+ <str name="maxCommitAge">1DAY</str>
231
+ -->
232
+ <!--
233
+ </deletionPolicy>
234
+ -->
235
+
236
+ <!-- Lucene Infostream
237
+
238
+ To aid in advanced debugging, Lucene provides an "InfoStream"
239
+ of detailed information when indexing.
240
+
241
+ Setting The value to true will instruct the underlying Lucene
242
+ IndexWriter to write its debugging info the specified file
243
+ -->
244
+ <!-- <infoStream file="INFOSTREAM.txt">false</infoStream> -->
245
+ </indexConfig>
246
+
247
+
248
+ <!-- The default high-performance update handler -->
249
+ <updateHandler class="solr.DirectUpdateHandler2">
250
+
251
+ <!-- Enables a transaction log, used for real-time get, durability, and
252
+ and solr cloud replica recovery. The log can grow as big as
253
+ uncommitted changes to the index, so use of a hard autoCommit
254
+ is recommended (see below).
255
+ "dir" - the target directory for transaction logs, defaults to the
256
+ solr data directory. -->
257
+ <updateLog>
258
+ <str name="dir">${solr.ulog.dir:}</str>
259
+ </updateLog>
260
+
261
+ <!-- AutoCommit
262
+
263
+ Perform a hard commit automatically under certain conditions.
264
+ Instead of enabling autoCommit, consider using "commitWithin"
265
+ when adding documents.
266
+
267
+ http://wiki.apache.org/solr/UpdateXmlMessages
268
+
269
+ maxDocs - Maximum number of documents to add since the last
270
+ commit before automatically triggering a new commit.
271
+
272
+ maxTime - Maximum amount of time in ms that is allowed to pass
273
+ since a document was added before automatically
274
+ triggering a new commit.
275
+ openSearcher - if false, the commit causes recent index changes
276
+ to be flushed to stable storage, but does not cause a new
277
+ searcher to be opened to make those changes visible.
278
+
279
+ If the updateLog is enabled, then it's highly recommended to
280
+ have some sort of hard autoCommit to limit the log size.
281
+ -->
282
+ <autoCommit>
283
+ <maxDocs>2000</maxDocs>
284
+ <openSearcher>false</openSearcher>
285
+ </autoCommit>
286
+
287
+ <!-- softAutoCommit is like autoCommit except it causes a
288
+ 'soft' commit which only ensures that changes are visible
289
+ but does not ensure that data is synced to disk. This is
290
+ faster and more near-realtime friendly than a hard commit.
291
+ -->
292
+ <!--
293
+ <autoSoftCommit>
294
+ <maxTime>1000</maxTime>
295
+ </autoSoftCommit>
296
+ -->
297
+
298
+ <!-- Update Related Event Listeners
299
+
300
+ Various IndexWriter related events can trigger Listeners to
301
+ take actions.
302
+
303
+ postCommit - fired after every commit or optimize command
304
+ postOptimize - fired after every optimize command
305
+ -->
306
+
307
+ </updateHandler>
308
+
309
+ <!-- IndexReaderFactory
310
+
311
+ Use the following format to specify a custom IndexReaderFactory,
312
+ which allows for alternate IndexReader implementations.
313
+
314
+ ** Experimental Feature **
315
+
316
+ Please note - Using a custom IndexReaderFactory may prevent
317
+ certain other features from working. The API to
318
+ IndexReaderFactory may change without warning or may even be
319
+ removed from future releases if the problems cannot be
320
+ resolved.
321
+
322
+
323
+ ** Features that may not work with custom IndexReaderFactory **
324
+
325
+ The ReplicationHandler assumes a disk-resident index. Using a
326
+ custom IndexReader implementation may cause incompatibility
327
+ with ReplicationHandler and may cause replication to not work
328
+ correctly. See SOLR-1366 for details.
329
+
330
+ -->
331
+ <!--
332
+ <indexReaderFactory name="IndexReaderFactory" class="package.class">
333
+ <str name="someArg">Some Value</str>
334
+ </indexReaderFactory >
335
+ -->
336
+
337
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
338
+ Query section - these settings control query time things like caches
339
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
340
+ <query>
341
+ <!-- Max Boolean Clauses
342
+
343
+ Maximum number of clauses in each BooleanQuery, an exception
344
+ is thrown if exceeded.
345
+
346
+ ** WARNING **
347
+
348
+ This option actually modifies a global Lucene property that
349
+ will affect all SolrCores. If multiple solrconfig.xml files
350
+ disagree on this property, the value at any given moment will
351
+ be based on the last SolrCore to be initialized.
352
+
353
+ -->
354
+ <maxBooleanClauses>${solr.max.booleanClauses:1024}</maxBooleanClauses>
355
+
356
+
357
+ <!-- Solr Internal Query Caches
358
+
359
+ There are four implementations of cache available for Solr:
360
+ LRUCache, based on a synchronized LinkedHashMap,
361
+ LFUCache and FastLRUCache, based on a ConcurrentHashMap, and CaffeineCache -
362
+ a modern and robust cache implementation. Note that in Solr 9.0
363
+ only CaffeineCache will be available, other implementations are now
364
+ deprecated.
365
+
366
+ FastLRUCache has faster gets and slower puts in single
367
+ threaded operation and thus is generally faster than LRUCache
368
+ when the hit ratio of the cache is high (> 75%), and may be
369
+ faster under other scenarios on multi-cpu systems.
370
+ -->
371
+
372
+ <!-- Filter Cache
373
+
374
+ Cache used by SolrIndexSearcher for filters (DocSets),
375
+ unordered sets of *all* documents that match a query. When a
376
+ new searcher is opened, its caches may be prepopulated or
377
+ "autowarmed" using data from caches in the old searcher.
378
+ autowarmCount is the number of items to prepopulate. For
379
+ LRUCache, the autowarmed items will be the most recently
380
+ accessed items.
381
+
382
+ Parameters:
383
+ class - the SolrCache implementation LRUCache or
384
+ (LRUCache or FastLRUCache)
385
+ size - the maximum number of entries in the cache
386
+ initialSize - the initial capacity (number of entries) of
387
+ the cache. (see java.util.HashMap)
388
+ autowarmCount - the number of entries to prepopulate from
389
+ and old cache.
390
+ -->
391
+ <filterCache class="solr.FastLRUCache"
392
+ size="512"
393
+ initialSize="512"
394
+ autowarmCount="0"/>
395
+
396
+ <!-- Query Result Cache
397
+
398
+ Caches results of searches - ordered lists of document ids
399
+ (DocList) based on a query, a sort, and the range of documents requested.
400
+ Additional supported parameter by LRUCache:
401
+ maxRamMB - the maximum amount of RAM (in MB) that this cache is allowed
402
+ to occupy
403
+ -->
404
+ <queryResultCache class="solr.LRUCache"
405
+ size="512"
406
+ initialSize="512"
407
+ autowarmCount="0"/>
408
+
409
+ <!-- Document Cache
410
+
411
+ Caches Lucene Document objects (the stored fields for each
412
+ document). Since Lucene internal document ids are transient,
413
+ this cache will not be autowarmed.
414
+ -->
415
+ <documentCache class="solr.LRUCache"
416
+ size="512"
417
+ initialSize="512"
418
+ autowarmCount="0"/>
419
+
420
+ <!-- Field Value Cache
421
+
422
+ Cache used to hold field values that are quickly accessible
423
+ by document id. The fieldValueCache is created by default
424
+ even if not configured here.
425
+ -->
426
+ <!--
427
+ <fieldValueCache class="solr.FastLRUCache"
428
+ size="512"
429
+ autowarmCount="128"
430
+ showItems="32" />
431
+ -->
432
+
433
+ <!-- Custom Cache
434
+
435
+ Example of a generic cache. These caches may be accessed by
436
+ name through SolrIndexSearcher.getCache(),cacheLookup(), and
437
+ cacheInsert(). The purpose is to enable easy caching of
438
+ user/application level data. The regenerator argument should
439
+ be specified as an implementation of solr.CacheRegenerator
440
+ if autowarming is desired.
441
+ -->
442
+ <!--
443
+ <cache name="myUserCache"
444
+ class="solr.LRUCache"
445
+ size="4096"
446
+ initialSize="1024"
447
+ autowarmCount="1024"
448
+ regenerator="com.mycompany.MyRegenerator"
449
+ />
450
+ -->
451
+
452
+
453
+ <!-- Lazy Field Loading
454
+
455
+ If true, stored fields that are not requested will be loaded
456
+ lazily. This can result in a significant speed improvement
457
+ if the usual case is to not load all stored fields,
458
+ especially if the skipped fields are large compressed text
459
+ fields.
460
+ -->
461
+ <enableLazyFieldLoading>true</enableLazyFieldLoading>
462
+
463
+ <!-- Use Filter For Sorted Query
464
+
465
+ A possible optimization that attempts to use a filter to
466
+ satisfy a search. If the requested sort does not include
467
+ score, then the filterCache will be checked for a filter
468
+ matching the query. If found, the filter will be used as the
469
+ source of document ids, and then the sort will be applied to
470
+ that.
471
+
472
+ For most situations, this will not be useful unless you
473
+ frequently get the same search repeatedly with different sort
474
+ options, and none of them ever use "score"
475
+ -->
476
+ <!--
477
+ <useFilterForSortedQuery>true</useFilterForSortedQuery>
478
+ -->
479
+
480
+ <!-- Result Window Size
481
+
482
+ An optimization for use with the queryResultCache. When a search
483
+ is requested, a superset of the requested number of document ids
484
+ are collected. For example, if a search for a particular query
485
+ requests matching documents 10 through 19, and queryWindowSize is 50,
486
+ then documents 0 through 49 will be collected and cached. Any further
487
+ requests in that range can be satisfied via the cache.
488
+ -->
489
+ <queryResultWindowSize>20</queryResultWindowSize>
490
+
491
+ <!-- Maximum number of documents to cache for any entry in the
492
+ queryResultCache.
493
+ -->
494
+ <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
495
+
496
+ <!-- Query Related Event Listeners
497
+
498
+ Various IndexSearcher related events can trigger Listeners to
499
+ take actions.
500
+
501
+ newSearcher - fired whenever a new searcher is being prepared
502
+ and there is a current searcher handling requests (aka
503
+ registered). It can be used to prime certain caches to
504
+ prevent long request times for certain requests.
505
+
506
+ firstSearcher - fired whenever a new searcher is being
507
+ prepared but there is no current registered searcher to handle
508
+ requests or to gain autowarming data from.
509
+
510
+
511
+ -->
512
+ <!-- QuerySenderListener takes an array of NamedList and executes a
513
+ local query request for each NamedList in sequence.
514
+ -->
515
+ <listener event="newSearcher" class="solr.QuerySenderListener">
516
+ <arr name="queries">
517
+ <!--
518
+ <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
519
+ <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
520
+ -->
521
+ </arr>
522
+ </listener>
523
+ <listener event="firstSearcher" class="solr.QuerySenderListener">
524
+ <arr name="queries">
525
+ <!--
526
+ <lst>
527
+ <str name="q">static firstSearcher warming in solrconfig.xml</str>
528
+ </lst>
529
+ -->
530
+ </arr>
531
+ </listener>
532
+
533
+ <!-- Use Cold Searcher
534
+
535
+ If a search request comes in and there is no current
536
+ registered searcher, then immediately register the still
537
+ warming searcher and use it. If "false" then all requests
538
+ will block until the first searcher is done warming.
539
+ -->
540
+ <useColdSearcher>false</useColdSearcher>
541
+
542
+ </query>
543
+
544
+
545
+ <!-- Request Dispatcher
546
+
547
+ This section contains instructions for how the SolrDispatchFilter
548
+ should behave when processing requests for this SolrCore.
549
+ -->
550
+ <requestDispatcher>
551
+ <!-- Request Parsing
552
+
553
+ These settings indicate how Solr Requests may be parsed, and
554
+ what restrictions may be placed on the ContentStreams from
555
+ those requests
556
+
557
+ enableRemoteStreaming - enables use of the stream.file
558
+ and stream.url parameters for specifying remote streams.
559
+
560
+ multipartUploadLimitInKB - specifies the max size (in KiB) of
561
+ Multipart File Uploads that Solr will allow in a Request.
562
+
563
+ formdataUploadLimitInKB - specifies the max size (in KiB) of
564
+ form data (application/x-www-form-urlencoded) sent via
565
+ POST. You can use POST to pass request parameters not
566
+ fitting into the URL.
567
+
568
+ addHttpRequestToContext - if set to true, it will instruct
569
+ the requestParsers to include the original HttpServletRequest
570
+ object in the context map of the SolrQueryRequest under the
571
+ key "httpRequest". It will not be used by any of the existing
572
+ Solr components, but may be useful when developing custom
573
+ plugins.
574
+
575
+ *** WARNING ***
576
+ Before enabling remote streaming, you should make sure your
577
+ system has authentication enabled.
578
+
579
+ <requestParsers enableRemoteStreaming="false"
580
+ multipartUploadLimitInKB="-1"
581
+ formdataUploadLimitInKB="-1"
582
+ addHttpRequestToContext="false"/>
583
+ -->
584
+
585
+ <!-- HTTP Caching
586
+
587
+ Set HTTP caching related parameters (for proxy caches and clients).
588
+
589
+ The options below instruct Solr not to output any HTTP Caching
590
+ related headers
591
+ -->
592
+ <httpCaching never304="true" />
593
+ <!-- If you include a <cacheControl> directive, it will be used to
594
+ generate a Cache-Control header (as well as an Expires header
595
+ if the value contains "max-age=")
596
+
597
+ By default, no Cache-Control header is generated.
598
+
599
+ You can use the <cacheControl> option even if you have set
600
+ never304="true"
601
+ -->
602
+ <!--
603
+ <httpCaching never304="true" >
604
+ <cacheControl>max-age=30, public</cacheControl>
605
+ </httpCaching>
606
+ -->
607
+ <!-- To enable Solr to respond with automatically generated HTTP
608
+ Caching headers, and to response to Cache Validation requests
609
+ correctly, set the value of never304="false"
610
+
611
+ This will cause Solr to generate Last-Modified and ETag
612
+ headers based on the properties of the Index.
613
+
614
+ The following options can also be specified to affect the
615
+ values of these headers...
616
+
617
+ lastModFrom - the default value is "openTime" which means the
618
+ Last-Modified value (and validation against If-Modified-Since
619
+ requests) will all be relative to when the current Searcher
620
+ was opened. You can change it to lastModFrom="dirLastMod" if
621
+ you want the value to exactly correspond to when the physical
622
+ index was last modified.
623
+
624
+ etagSeed="..." is an option you can change to force the ETag
625
+ header (and validation against If-None-Match requests) to be
626
+ different even if the index has not changed (ie: when making
627
+ significant changes to your config file)
628
+
629
+ (lastModifiedFrom and etagSeed are both ignored if you use
630
+ the never304="true" option)
631
+ -->
632
+ <!--
633
+ <httpCaching lastModifiedFrom="openTime"
634
+ etagSeed="Solr">
635
+ <cacheControl>max-age=30, public</cacheControl>
636
+ </httpCaching>
637
+ -->
638
+ </requestDispatcher>
639
+
640
+ <!-- Request Handlers
641
+
642
+ http://wiki.apache.org/solr/SolrRequestHandler
643
+
644
+ Incoming queries will be dispatched to a specific handler by name
645
+ based on the path specified in the request.
646
+
647
+ If a Request Handler is declared with startup="lazy", then it will
648
+ not be initialized until the first request that uses it.
649
+
650
+ -->
651
+
652
+ <requestHandler name="/select" class="solr.SearchHandler" default="true">
653
+ <!-- default values for query parameters can be specified, these
654
+ will be overridden by parameters in the request
655
+ -->
656
+ <lst name="defaults">
657
+ <str name="defType">edismax</str>
658
+ <str name="echoParams">explicit</str>
659
+ <str name="q.alt">*:*</str>
660
+ <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
661
+ <int name="qs">1</int>
662
+ <int name="ps">3</int>
663
+ <float name="tie">0.01</float>
664
+ <!-- this qf and pf are used by default, if not otherwise specified by
665
+ client. The default blacklight_config will use these for the
666
+ "keywords" search. See the author_qf/author_pf, title_qf, etc
667
+ below, which the default blacklight_config will specify for
668
+ those searches. You may also be interested in:
669
+ http://wiki.apache.org/solr/LocalParams
670
+ -->
671
+ <str name="qf">
672
+ authority_data_t^0.5
673
+ abstract_t^2.5
674
+ author_t^82
675
+ contents_t^3.1
676
+ contributor_t^1.2
677
+ course_t
678
+ department_tsim
679
+ followed_by_t
680
+ genre_tsim^5.0
681
+ has_part_t
682
+ is_part_of_t
683
+ isbn_t
684
+ isbn_of_alternate_edition_t
685
+ language_facet
686
+ note_t
687
+ preceeded_by_t
688
+ professor_t
689
+ publisher_t
690
+ series_tsim
691
+ subject_name_tsim^410.0
692
+ subject_topic_tsim^437.0
693
+ subject_era_tsim^370.0
694
+ subject_geo_tsim^528.0
695
+ subtitle_t^60.0
696
+ title_t^490.0
697
+ title_and_statement_of_responsibility_t^90.0
698
+ </str>
699
+ <str name="pf">
700
+ abstract_t^150
701
+ author_t^20
702
+ contents_t^5
703
+ course_t^100
704
+ series_tsim
705
+ subject_geo_tsim^63.0
706
+ subject_topic_tsim^63.0
707
+ subject_t^100
708
+ subtitle_t^310
709
+ title_and_statement_of_responsibility_t^90.0
710
+ title_t^450
711
+ </str>
712
+ <str name="bq">
713
+ is_electronic_facet:"Albany Campus Library"^150.0
714
+ </str>
715
+ <str name="bq">
716
+ is_electronic_facet:"Healthcare Occupations Center"^75.0
717
+ </str>
718
+ <str name="bq">
719
+ is_electronic_facet:Online^120.0
720
+ </str>
721
+ <str name="bq">
722
+ record_source_facet:"Ebook Central Academic Complete"^250.0
723
+ </str>
724
+ <str name="bq">
725
+ record_source_facet:"Academic Video Online: Premium United States"^80.0
726
+ </str>
727
+ <str name="bq">
728
+ record_source_facet:"Films on Demand"^80.0
729
+ </str>
730
+ <str name="bq">
731
+ record_source_facet:"NCBI Bookshelf"^35.0
732
+ </str>
733
+ <str name="bq">
734
+ subject_geo_tsim:"United States"^5.0
735
+ </str>
736
+ <str name="bq">
737
+ pub_date_sort:[2017 TO *]^40.0
738
+ </str>
739
+ <str name="bq">
740
+ pub_date_sort:[1925 TO *]^60.0
741
+ </str>
742
+ <str name="bq">
743
+ language_facet:English^70
744
+ </str>
745
+ <str name="bq">
746
+ language_facet:Spanish^71
747
+ </str>
748
+
749
+ <str name="author_qf">
750
+ author_t
751
+ </str>
752
+ <str name="author_pf">
753
+ </str>
754
+ <str name="title_qf">
755
+ title_addl_t
756
+ title_t^5.0
757
+ subtitle_t
758
+ </str>
759
+ <str name="title_pf">
760
+ title_t^2.0
761
+ subtitle_t
762
+ </str>
763
+ <str name="subject_qf">
764
+ subject_name_tsim
765
+ subject_topic_tsim^2.0
766
+ subject_era_tsim
767
+ subject_geo_tsim^3.0
768
+ </str>
769
+ <str name="subject_pf">
770
+ subject_t
771
+ </str>
772
+
773
+ <str name="fl">
774
+ *,
775
+ score
776
+ </str>
777
+
778
+ <str name="facet">true</str>
779
+ <str name="facet.mincount">1</str>
780
+ <str name="facet.limit">10</str>
781
+ <str name="facet.field">active_fedora_model_ssi</str>
782
+ <str name="facet.field">subject_ssim</str>
783
+
784
+ <str name="spellcheck">true</str>
785
+ <str name="spellcheck.dictionary">default</str>
786
+ <str name="spellcheck.onlyMorePopular">true</str>
787
+ <str name="spellcheck.extendedResults">true</str>
788
+ <str name="spellcheck.collate">true</str>
789
+ <str name="spellcheck.maxCollations">3</str>
790
+ <str name="spellcheck.maxCollationTries">2</str>
791
+ <str name="spellcheck.count">3</str>
792
+
793
+ </lst>
794
+ <arr name="last-components">
795
+ <str>spellcheck</str>
796
+ </arr>
797
+ </requestHandler>
798
+
799
+ <initParams path="/update/**">
800
+ <lst name="defaults">
801
+ <str name="update.chain">files-update-processor</str>
802
+ </lst>
803
+ </initParams>
804
+
805
+ <!-- Solr Cell Update Request Handler
806
+
807
+ http://wiki.apache.org/solr/ExtractingRequestHandler
808
+
809
+ -->
810
+ <requestHandler name="/update/extract"
811
+ startup="lazy"
812
+ class="solr.extraction.ExtractingRequestHandler" >
813
+ <lst name="defaults">
814
+ <str name="xpath">/xhtml:html/xhtml:body/descendant:node()</str>
815
+ <str name="capture">content</str>
816
+ <str name="fmap.meta">attr_meta_</str>
817
+ <str name="uprefix">attr_</str>
818
+ <str name="lowernames">true</str>
819
+ </lst>
820
+ </requestHandler>
821
+ <!-- Search Components
822
+
823
+ Search components are registered to SolrCore and used by
824
+ instances of SearchHandler (which can access them by name)
825
+
826
+ By default, the following components are available:
827
+
828
+ <searchComponent name="query" class="solr.QueryComponent" />
829
+ <searchComponent name="facet" class="solr.FacetComponent" />
830
+ <searchComponent name="mlt" class="solr.MoreLikeThisComponent" />
831
+ <searchComponent name="highlight" class="solr.HighlightComponent" />
832
+ <searchComponent name="stats" class="solr.StatsComponent" />
833
+ <searchComponent name="debug" class="solr.DebugComponent" />
834
+
835
+ Default configuration in a requestHandler would look like:
836
+
837
+ <arr name="components">
838
+ <str>query</str>
839
+ <str>facet</str>
840
+ <str>mlt</str>
841
+ <str>highlight</str>
842
+ <str>stats</str>
843
+ <str>debug</str>
844
+ </arr>
845
+
846
+ If you register a searchComponent to one of the standard names,
847
+ that will be used instead of the default.
848
+
849
+ To insert components before or after the 'standard' components, use:
850
+
851
+ <arr name="first-components">
852
+ <str>myFirstComponentName</str>
853
+ </arr>
854
+
855
+ <arr name="last-components">
856
+ <str>myLastComponentName</str>
857
+ </arr>
858
+
859
+ NOTE: The component registered with the name "debug" will
860
+ always be executed after the "last-components"
861
+
862
+ -->
863
+
864
+
865
+ <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
866
+ <str name="queryAnalyzerFieldType">textSpell</str>
867
+ <!-- Multiple "Spell Checkers" can be declared and used by this component
868
+ (e.g. for title_spell field)
869
+ -->
870
+ <lst name="spellchecker">
871
+ <str name="name">default</str>
872
+ <str name="field">spell</str>
873
+ <str name="spellcheckIndexDir">./spell</str>
874
+ <str name="buildOnOptimize">true</str>
875
+ </lst>
876
+ <lst name="spellchecker">
877
+ <str name="name">author</str>
878
+ <str name="field">author_spell</str>
879
+ <str name="spellcheckIndexDir">./spell_author</str>
880
+ <str name="accuracy">0.7</str>
881
+ <str name="buildOnOptimize">true</str>
882
+ </lst>
883
+ <lst name="spellchecker">
884
+ <str name="name">subject</str>
885
+ <str name="field">subject_spell</str>
886
+ <str name="spellcheckIndexDir">./spell_subject</str>
887
+ <str name="accuracy">0.7</str>
888
+ <str name="buildOnOptimize">true</str>
889
+ </lst>
890
+ <lst name="spellchecker">
891
+ <str name="name">title</str>
892
+ <str name="field">title_spell</str>
893
+ <str name="spellcheckIndexDir">./spell_title</str>
894
+ <str name="accuracy">0.7</str>
895
+ <str name="buildOnOptimize">true</str>
896
+ </lst>
897
+ </searchComponent>
898
+
899
+ <!-- Term Vector Component
900
+
901
+ http://wiki.apache.org/solr/TermVectorComponent
902
+ -->
903
+ <searchComponent name="tvComponent" class="solr.TermVectorComponent"/>
904
+
905
+ <!-- A request handler for demonstrating the term vector component
906
+
907
+ This is purely as an example.
908
+
909
+ In reality you will likely want to add the component to your
910
+ already specified request handlers.
911
+ -->
912
+ <requestHandler name="/tvrh" class="solr.SearchHandler" startup="lazy">
913
+ <lst name="defaults">
914
+ <bool name="tv">true</bool>
915
+ </lst>
916
+ <arr name="last-components">
917
+ <str>tvComponent</str>
918
+ </arr>
919
+ </requestHandler>
920
+
921
+ <!-- Clustering Component. (Omitted here. See the default Solr example for a typical configuration.) -->
922
+
923
+ <!-- Terms Component
924
+
925
+ http://wiki.apache.org/solr/TermsComponent
926
+
927
+ A component to return terms and document frequency of those
928
+ terms
929
+ -->
930
+ <searchComponent name="terms" class="solr.TermsComponent"/>
931
+
932
+ <!-- A request handler for demonstrating the terms component -->
933
+ <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">
934
+ <lst name="defaults">
935
+ <bool name="terms">true</bool>
936
+ <bool name="distrib">false</bool>
937
+ </lst>
938
+ <arr name="components">
939
+ <str>terms</str>
940
+ </arr>
941
+ </requestHandler>
942
+
943
+ <!-- Highlighting Component
944
+
945
+ http://wiki.apache.org/solr/HighlightingParameters
946
+ -->
947
+ <searchComponent class="solr.HighlightComponent" name="highlight">
948
+ <highlighting>
949
+ <!-- Configure the standard fragmenter -->
950
+ <!-- This could most likely be commented out in the "default" case -->
951
+ <fragmenter name="gap"
952
+ default="true"
953
+ class="solr.highlight.GapFragmenter">
954
+ <lst name="defaults">
955
+ <int name="hl.fragsize">100</int>
956
+ </lst>
957
+ </fragmenter>
958
+
959
+ <!-- A regular-expression-based fragmenter
960
+ (for sentence extraction)
961
+ -->
962
+ <fragmenter name="regex"
963
+ class="solr.highlight.RegexFragmenter">
964
+ <lst name="defaults">
965
+ <!-- slightly smaller fragsizes work better because of slop -->
966
+ <int name="hl.fragsize">70</int>
967
+ <!-- allow 50% slop on fragment sizes -->
968
+ <float name="hl.regex.slop">0.5</float>
969
+ <!-- a basic sentence pattern -->
970
+ <str name="hl.regex.pattern">[-\w ,/\n\&quot;&apos;]{20,200}</str>
971
+ </lst>
972
+ </fragmenter>
973
+
974
+ <!-- Configure the standard formatter -->
975
+ <formatter name="html"
976
+ default="true"
977
+ class="solr.highlight.HtmlFormatter">
978
+ <lst name="defaults">
979
+ <str name="hl.simple.pre"><![CDATA[<em>]]></str>
980
+ <str name="hl.simple.post"><![CDATA[</em>]]></str>
981
+ </lst>
982
+ </formatter>
983
+
984
+ <!-- Configure the standard encoder -->
985
+ <encoder name="html"
986
+ class="solr.highlight.HtmlEncoder" />
987
+
988
+ <!-- Configure the standard fragListBuilder -->
989
+ <fragListBuilder name="simple"
990
+ class="solr.highlight.SimpleFragListBuilder"/>
991
+
992
+ <!-- Configure the single fragListBuilder -->
993
+ <fragListBuilder name="single"
994
+ class="solr.highlight.SingleFragListBuilder"/>
995
+
996
+ <!-- Configure the weighted fragListBuilder -->
997
+ <fragListBuilder name="weighted"
998
+ default="true"
999
+ class="solr.highlight.WeightedFragListBuilder"/>
1000
+
1001
+ <!-- default tag FragmentsBuilder -->
1002
+ <fragmentsBuilder name="default"
1003
+ default="true"
1004
+ class="solr.highlight.ScoreOrderFragmentsBuilder">
1005
+ <!--
1006
+ <lst name="defaults">
1007
+ <str name="hl.multiValuedSeparatorChar">/</str>
1008
+ </lst>
1009
+ -->
1010
+ </fragmentsBuilder>
1011
+
1012
+ <!-- multi-colored tag FragmentsBuilder -->
1013
+ <fragmentsBuilder name="colored"
1014
+ class="solr.highlight.ScoreOrderFragmentsBuilder">
1015
+ <lst name="defaults">
1016
+ <str name="hl.tag.pre"><![CDATA[
1017
+ <b style="background:yellow">,<b style="background:lawgreen">,
1018
+ <b style="background:aquamarine">,<b style="background:magenta">,
1019
+ <b style="background:palegreen">,<b style="background:coral">,
1020
+ <b style="background:wheat">,<b style="background:khaki">,
1021
+ <b style="background:lime">,<b style="background:deepskyblue">]]></str>
1022
+ <str name="hl.tag.post"><![CDATA[</b>]]></str>
1023
+ </lst>
1024
+ </fragmentsBuilder>
1025
+
1026
+ <boundaryScanner name="default"
1027
+ default="true"
1028
+ class="solr.highlight.SimpleBoundaryScanner">
1029
+ <lst name="defaults">
1030
+ <str name="hl.bs.maxScan">10</str>
1031
+ <str name="hl.bs.chars">.,!? &#9;&#10;&#13;</str>
1032
+ </lst>
1033
+ </boundaryScanner>
1034
+
1035
+ <boundaryScanner name="breakIterator"
1036
+ class="solr.highlight.BreakIteratorBoundaryScanner">
1037
+ <lst name="defaults">
1038
+ <!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->
1039
+ <str name="hl.bs.type">WORD</str>
1040
+ <!-- language and country are used when constructing Locale object. -->
1041
+ <!-- And the Locale object will be used when getting instance of BreakIterator -->
1042
+ <str name="hl.bs.language">en</str>
1043
+ <str name="hl.bs.country">US</str>
1044
+ </lst>
1045
+ </boundaryScanner>
1046
+ </highlighting>
1047
+ </searchComponent>
1048
+
1049
+ <searchComponent name="suggest" class="solr.SuggestComponent">
1050
+ <lst name="suggester">
1051
+ <str name="name">mySuggester</str>
1052
+ <str name="lookupImpl">FreeTextLookupFactory</str>
1053
+ <str name="suggestFreeTextAnalyzerFieldType">textSuggest</str>
1054
+ <str name="buildOnCommit">true</str>
1055
+ <str name="field">suggest</str>
1056
+ </lst>
1057
+ </searchComponent>
1058
+
1059
+ <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
1060
+ <lst name="defaults">
1061
+ <str name="suggest">true</str>
1062
+ <str name="suggest.count">5</str>
1063
+ <str name="suggest.dictionary">mySuggester</str>
1064
+ </lst>
1065
+ <arr name="components">
1066
+ <str>suggest</str>
1067
+ </arr>
1068
+ </requestHandler>
1069
+
1070
+ <!-- Update Processors
1071
+
1072
+ Chains of Update Processor Factories for dealing with Update
1073
+ Requests can be declared, and then used by name in Update
1074
+ Request Processors
1075
+
1076
+ http://wiki.apache.org/solr/UpdateRequestProcessor
1077
+
1078
+ -->
1079
+
1080
+
1081
+
1082
+ <!-- Add unknown fields to the schema
1083
+
1084
+ An example field type guessing update processor that will
1085
+ attempt to parse string-typed field values as Booleans, Longs,
1086
+ Doubles, or Dates, and then add schema fields with the guessed
1087
+ field types.
1088
+
1089
+ This requires that the schema is both managed and mutable, by
1090
+ declaring schemaFactory as ManagedIndexSchemaFactory, with
1091
+ mutable specified as true.
1092
+
1093
+ See http://wiki.apache.org/solr/GuessingFieldTypes
1094
+ -->
1095
+ <updateRequestProcessorChain name="files-update-processor">
1096
+ <!-- UUIDUpdateProcessorFactory will generate an id if none is present in the incoming document -->
1097
+ <processor class="solr.UUIDUpdateProcessorFactory" />
1098
+ <processor class="solr.RemoveBlankFieldUpdateProcessorFactory"/>
1099
+ <processor class="solr.FieldNameMutatingUpdateProcessorFactory">
1100
+ <str name="pattern">[^\w-\.]</str>
1101
+ <str name="replacement">_</str>
1102
+ </processor>
1103
+ <processor class="solr.ParseBooleanFieldUpdateProcessorFactory"/>
1104
+ <processor class="solr.ParseLongFieldUpdateProcessorFactory"/>
1105
+ <processor class="solr.ParseDoubleFieldUpdateProcessorFactory"/>
1106
+ <processor class="solr.ParseDateFieldUpdateProcessorFactory">
1107
+ <arr name="format">
1108
+ <str>yyyy-MM-dd['T'[HH:mm[:ss[.SSS]][z</str>
1109
+ <str>yyyy-MM-dd['T'[HH:mm[:ss[,SSS]][z</str>
1110
+ <str>yyyy-MM-dd HH:mm[:ss[.SSS]][z</str>
1111
+ <str>yyyy-MM-dd HH:mm[:ss[,SSS]][z</str>
1112
+ <str>[EEE, ]dd MMM yyyy HH:mm[:ss] z</str>
1113
+ <str>EEEE, dd-MMM-yy HH:mm:ss z</str>
1114
+ <str>EEE MMM ppd HH:mm:ss [z ]yyyy</str>
1115
+ </arr>
1116
+ </processor>
1117
+
1118
+ <processor class="solr.LogUpdateProcessorFactory"/>
1119
+ <processor class="solr.DistributedUpdateProcessorFactory"/>
1120
+ <processor class="solr.RunUpdateProcessorFactory"/>
1121
+ </updateRequestProcessorChain>
1122
+
1123
+ <!-- Deduplication
1124
+
1125
+ An example dedup update processor that creates the "id" field
1126
+ on the fly based on the hash code of some other fields. This
1127
+ example has overwriteDupes set to false since we are using the
1128
+ id field as the signatureField and Solr will maintain
1129
+ uniqueness based on that anyway.
1130
+
1131
+ -->
1132
+ <!--
1133
+ <updateRequestProcessorChain name="dedupe">
1134
+ <processor class="solr.processor.SignatureUpdateProcessorFactory">
1135
+ <bool name="enabled">true</bool>
1136
+ <str name="signatureField">id</str>
1137
+ <bool name="overwriteDupes">false</bool>
1138
+ <str name="fields">name,features,cat</str>
1139
+ <str name="signatureClass">solr.processor.Lookup3Signature</str>
1140
+ </processor>
1141
+ <processor class="solr.LogUpdateProcessorFactory" />
1142
+ <processor class="solr.RunUpdateProcessorFactory" />
1143
+ </updateRequestProcessorChain>
1144
+ -->
1145
+
1146
+ <!-- Language identification
1147
+
1148
+ This example update chain identifies the language of the incoming
1149
+ documents using the langid contrib. The detected language is
1150
+ written to field language_s. No field name mapping is done.
1151
+ The fields used for detection are text, title, subject and description,
1152
+ making this example suitable for detecting languages form full-text
1153
+ rich documents injected via ExtractingRequestHandler.
1154
+ See more about langId at http://wiki.apache.org/solr/LanguageDetection
1155
+ -->
1156
+ <!--
1157
+ <updateRequestProcessorChain name="langid">
1158
+ <processor class="org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory">
1159
+ <str name="langid.fl">text,title,subject,description</str>
1160
+ <str name="langid.langField">language_s</str>
1161
+ <str name="langid.fallback">en</str>
1162
+ </processor>
1163
+ <processor class="solr.LogUpdateProcessorFactory" />
1164
+ <processor class="solr.RunUpdateProcessorFactory" />
1165
+ </updateRequestProcessorChain>
1166
+ -->
1167
+
1168
+ <!-- Script update processor
1169
+
1170
+ This example hooks in an update processor implemented using JavaScript.
1171
+
1172
+ See more about the script update processor at http://wiki.apache.org/solr/ScriptUpdateProcessor
1173
+ -->
1174
+ <!--
1175
+ <updateRequestProcessorChain name="script">
1176
+ <processor class="solr.StatelessScriptUpdateProcessorFactory">
1177
+ <str name="script">update-script.js</str>
1178
+ <lst name="params">
1179
+ <str name="config_param">example config parameter</str>
1180
+ </lst>
1181
+ </processor>
1182
+ <processor class="solr.RunUpdateProcessorFactory" />
1183
+ </updateRequestProcessorChain>
1184
+ -->
1185
+
1186
+ <!-- Response Writers
1187
+
1188
+ http://wiki.apache.org/solr/QueryResponseWriter
1189
+
1190
+ Request responses will be written using the writer specified by
1191
+ the 'wt' request parameter matching the name of a registered
1192
+ writer.
1193
+
1194
+ The "default" writer is the default and will be used if 'wt' is
1195
+ not specified in the request.
1196
+ -->
1197
+ <!-- The following response writers are implicitly configured unless
1198
+ overridden...
1199
+ -->
1200
+ <!--
1201
+ <queryResponseWriter name="xml"
1202
+ default="true"
1203
+ class="solr.XMLResponseWriter" />
1204
+ <queryResponseWriter name="json" class="solr.JSONResponseWriter"/>
1205
+ <queryResponseWriter name="python" class="solr.PythonResponseWriter"/>
1206
+ <queryResponseWriter name="ruby" class="solr.RubyResponseWriter"/>
1207
+ <queryResponseWriter name="php" class="solr.PHPResponseWriter"/>
1208
+ <queryResponseWriter name="phps" class="solr.PHPSerializedResponseWriter"/>
1209
+ <queryResponseWriter name="csv" class="solr.CSVResponseWriter"/>
1210
+ <queryResponseWriter name="schema.xml" class="solr.SchemaXmlResponseWriter"/>
1211
+ -->
1212
+
1213
+ <queryResponseWriter name="json" class="solr.JSONResponseWriter">
1214
+ <!-- For the purposes of the tutorial, JSON responses are written as
1215
+ plain text so that they are easy to read in *any* browser.
1216
+ If you expect a MIME type of "application/json" just remove this override.
1217
+ -->
1218
+ <str name="content-type">text/plain; charset=UTF-8</str>
1219
+ </queryResponseWriter>
1220
+
1221
+ <!--
1222
+ Custom response writers can be declared as needed...
1223
+ -->
1224
+ <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy">
1225
+ <str name="template.base.dir">${velocity.template.base.dir:}</str>
1226
+ </queryResponseWriter>
1227
+
1228
+ <!-- XSLT response writer transforms the XML output by any xslt file found
1229
+ in Solr's conf/xslt directory. Changes to xslt files are checked for
1230
+ every xsltCacheLifetimeSeconds.
1231
+ -->
1232
+ <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
1233
+ <int name="xsltCacheLifetimeSeconds">5</int>
1234
+ </queryResponseWriter>
1235
+
1236
+ <!-- Query Parsers
1237
+
1238
+ https://lucene.apache.org/solr/guide/query-syntax-and-parsing.html
1239
+
1240
+ Multiple QParserPlugins can be registered by name, and then
1241
+ used in either the "defType" param for the QueryComponent (used
1242
+ by SearchHandler) or in LocalParams
1243
+ -->
1244
+ <!-- example of registering a query parser -->
1245
+ <!--
1246
+ <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
1247
+ -->
1248
+
1249
+ <!-- Function Parsers
1250
+
1251
+ http://wiki.apache.org/solr/FunctionQuery
1252
+
1253
+ Multiple ValueSourceParsers can be registered by name, and then
1254
+ used as function names when using the "func" QParser.
1255
+ -->
1256
+ <!-- example of registering a custom function parser -->
1257
+ <!--
1258
+ <valueSourceParser name="myfunc"
1259
+ class="com.mycompany.MyValueSourceParser" />
1260
+ -->
1261
+
1262
+
1263
+ <!-- Document Transformers
1264
+ http://wiki.apache.org/solr/DocTransformers
1265
+ -->
1266
+ <!--
1267
+ Could be something like:
1268
+ <transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
1269
+ <int name="connection">jdbc://....</int>
1270
+ </transformer>
1271
+
1272
+ To add a constant value to all docs, use:
1273
+ <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
1274
+ <int name="value">5</int>
1275
+ </transformer>
1276
+
1277
+ If you want the user to still be able to change it with _value:something_ use this:
1278
+ <transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
1279
+ <double name="defaultValue">5</double>
1280
+ </transformer>
1281
+
1282
+ If you are using the QueryElevationComponent, you may wish to mark documents that get boosted. The
1283
+ EditorialMarkerFactory will do exactly that:
1284
+ <transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
1285
+ -->
1286
+
1287
+ </config>