common_repository_model 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. data/common_repository_model.gemspec +3 -1
  2. data/config/README.md +5 -0
  3. data/config/solrconfig.xml +1858 -0
  4. data/lib/common_repository_model/area.rb +2 -1
  5. data/lib/common_repository_model/area_serializer.rb +4 -0
  6. data/lib/common_repository_model/collection.rb +10 -0
  7. data/lib/common_repository_model/collection_serializer.rb +4 -0
  8. data/lib/common_repository_model/data.rb +2 -2
  9. data/lib/common_repository_model/data_serializer.rb +5 -0
  10. data/lib/common_repository_model/persistence_base.rb +16 -0
  11. data/lib/common_repository_model/persistence_base_serializer.rb +6 -0
  12. data/lib/common_repository_model/railtie.rb +6 -1
  13. data/lib/common_repository_model/test_support.rb +19 -0
  14. data/lib/common_repository_model/version.rb +1 -1
  15. data/lib/generators/common_repository_model/collection/USAGE +7 -4
  16. data/lib/generators/common_repository_model/collection/collection_generator.rb +24 -1
  17. data/lib/generators/common_repository_model/collection/templates/collection_factory.rb.erb +13 -0
  18. data/lib/generators/common_repository_model/collection/templates/collection_serializer.rb.erb +9 -0
  19. data/lib/generators/common_repository_model/collection/templates/collection_serializer_spec.rb.erb +12 -0
  20. data/lib/generators/common_repository_model/collection/templates/collection_spec.rb.erb +6 -1
  21. data/spec/common_respository_model/area_serializer_spec.rb +13 -0
  22. data/spec/common_respository_model/area_spec.rb +2 -2
  23. data/spec/common_respository_model/collection_serializer_spec.rb +15 -0
  24. data/spec/common_respository_model/collection_spec.rb +17 -2
  25. data/spec/common_respository_model/data_serializer_spec.rb +15 -0
  26. data/spec/common_respository_model/data_spec.rb +7 -7
  27. data/spec/common_respository_model/integration_spec.rb +1 -1
  28. data/spec/common_respository_model/persistence_base_serializer_spec.rb +12 -0
  29. data/spec/common_respository_model/test_support_spec.rb +12 -0
  30. data/spec/factories/common_repository_model/area_factory.rb +8 -0
  31. data/spec/factories/common_repository_model/collection_factory.rb +7 -0
  32. data/spec/factories/common_repository_model/data_factory.rb +10 -0
  33. data/spec/spec_helper.rb +2 -8
  34. metadata +63 -7
  35. data/spec/factories/common_repository_model_factories.rb +0 -17
@@ -24,8 +24,10 @@ Gem::Specification.new do |gem|
24
24
  gem.add_dependency "activesupport", "~>3.2"
25
25
  gem.add_dependency "activemodel", "~>3.2"
26
26
  gem.add_dependency "builder", "~>3.0"
27
+ gem.add_dependency "morphine"
28
+ gem.add_dependency "active_model_serializers"
27
29
  gem.add_runtime_dependency "minitest"
28
30
  gem.add_runtime_dependency "minitest-matchers"
29
- gem.add_runtime_dependency "active-fedora"
31
+ gem.add_runtime_dependency "active-fedora", "5.0.0.rc3"
30
32
  gem.add_runtime_dependency "factory_girl"
31
33
  end
data/config/README.md ADDED
@@ -0,0 +1,5 @@
1
+ The solrconfig.xml requires proper configuration; When running tests against the
2
+ CommonRepositoryModel use the solrconfig.xml.
3
+
4
+ This solrconfig.xml is part of a larger configuration management concern, but
5
+ for now we are deferring.
@@ -0,0 +1,1858 @@
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
+ <!-- Set this to 'false' if you want solr to continue working after
33
+ it has encountered an severe configuration error. In a
34
+ production environment, you may want solr to keep working even
35
+ if one handler is mis-configured.
36
+
37
+ You may also set this to false using by setting the system
38
+ property:
39
+
40
+ -Dsolr.abortOnConfigurationError=false
41
+ -->
42
+ <abortOnConfigurationError>${solr.abortOnConfigurationError:false}</abortOnConfigurationError>
43
+
44
+ <!-- Controls what version of Lucene various components of Solr
45
+ adhere to. Generally, you want to use the latest version to
46
+ get all bug fixes and improvements. It is highly recommended
47
+ that you fully re-index after changing this setting as it can
48
+ affect both how text is indexed and queried.
49
+ -->
50
+ <luceneMatchVersion>LUCENE_36</luceneMatchVersion>
51
+
52
+ <!-- lib directives can be used to instruct Solr to load an Jars
53
+ identified and use them to resolve any "plugins" specified in
54
+ your solrconfig.xml or schema.xml (ie: Analyzers, Request
55
+ Handlers, etc...).
56
+
57
+ All directories and paths are resolved relative to the
58
+ instanceDir.
59
+
60
+ If a "./lib" directory exists in your instanceDir, all files
61
+ found in it are included as if you had used the following
62
+ syntax...
63
+
64
+ <lib dir="./lib" />
65
+ -->
66
+
67
+ <!-- A dir option by itself adds any files found in the directory to
68
+ the classpath, this is useful for including all jars in a
69
+ directory.
70
+ -->
71
+
72
+ <!-- When a regex is specified in addition to a directory, only the
73
+ files in that directory which completely match the regex
74
+ (anchored on both ends) will be included.
75
+ -->
76
+ <!-- If a dir option (with or without a regex) is used and nothing
77
+ is found that matches, it will be ignored
78
+ -->
79
+ <!-- an exact path can be used to specify a specific file. This
80
+ will cause a serious error to be logged if it can't be loaded.
81
+ -->
82
+
83
+ <!-- Data Directory
84
+
85
+ Used to specify an alternate directory to hold all index data
86
+ other than the default ./data under the Solr home. If
87
+ replication is in use, this should match the replication
88
+ configuration.
89
+ -->
90
+ <dataDir>${solr.data.dir:}</dataDir>
91
+
92
+
93
+ <!-- The DirectoryFactory to use for indexes.
94
+
95
+ solr.StandardDirectoryFactory, the default, is filesystem
96
+ based. solr.RAMDirectoryFactory is memory based, not
97
+ persistent, and doesn't work with replication.
98
+ -->
99
+ <directoryFactory name="DirectoryFactory"
100
+ class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>
101
+
102
+
103
+ <!-- Index Defaults
104
+
105
+ Values here affect all index writers and act as a default
106
+ unless overridden.
107
+
108
+ WARNING: See also the <mainIndex> section below for parameters
109
+ that overfor Solr's main Lucene index.
110
+ -->
111
+ <indexDefaults>
112
+
113
+ <useCompoundFile>false</useCompoundFile>
114
+
115
+ <mergeFactor>10</mergeFactor>
116
+ <!-- Sets the amount of RAM that may be used by Lucene indexing
117
+ for buffering added documents and deletions before they are
118
+ flushed to the Directory. -->
119
+ <ramBufferSizeMB>32</ramBufferSizeMB>
120
+ <!-- If both ramBufferSizeMB and maxBufferedDocs is set, then
121
+ Lucene will flush based on whichever limit is hit first.
122
+ -->
123
+ <!-- <maxBufferedDocs>1000</maxBufferedDocs> -->
124
+
125
+ <maxFieldLength>10000</maxFieldLength>
126
+ <writeLockTimeout>1000</writeLockTimeout>
127
+
128
+ <!-- Expert: Merge Policy
129
+
130
+ The Merge Policy in Lucene controls how merging is handled by
131
+ Lucene. The default in Solr 3.3 is TieredMergePolicy.
132
+
133
+ The default in 2.3 was the LogByteSizeMergePolicy,
134
+ previous versions used LogDocMergePolicy.
135
+
136
+ LogByteSizeMergePolicy chooses segments to merge based on
137
+ their size. The Lucene 2.2 default, LogDocMergePolicy chose
138
+ when to merge based on number of documents
139
+
140
+ Other implementations of MergePolicy must have a no-argument
141
+ constructor
142
+ -->
143
+ <!--
144
+ <mergePolicy class="org.apache.lucene.index.TieredMergePolicy"/>
145
+ -->
146
+
147
+ <!-- Expert: Merge Scheduler
148
+
149
+ The Merge Scheduler in Lucene controls how merges are
150
+ performed. The ConcurrentMergeScheduler (Lucene 2.3 default)
151
+ can perform merges in the background using separate threads.
152
+ The SerialMergeScheduler (Lucene 2.2 default) does not.
153
+ -->
154
+ <!--
155
+ <mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>
156
+ -->
157
+
158
+ <!-- LockFactory
159
+
160
+ This option specifies which Lucene LockFactory implementation
161
+ to use.
162
+
163
+ single = SingleInstanceLockFactory - suggested for a
164
+ read-only index or when there is no possibility of
165
+ another process trying to modify the index.
166
+ native = NativeFSLockFactory - uses OS native file locking.
167
+ Do not use when multiple solr webapps in the same
168
+ JVM are attempting to share a single index.
169
+ simple = SimpleFSLockFactory - uses a plain file for locking
170
+
171
+ (For backwards compatibility with Solr 1.2, 'simple' is the
172
+ default if not specified.)
173
+
174
+ More details on the nuances of each LockFactory...
175
+ http://wiki.apache.org/lucene-java/AvailableLockFactories
176
+ -->
177
+ <lockType>native</lockType>
178
+
179
+ <!-- Expert: Controls how often Lucene loads terms into memory
180
+ Default is 128 and is likely good for most everyone.
181
+ -->
182
+ <!-- <termIndexInterval>256</termIndexInterval> -->
183
+ </indexDefaults>
184
+
185
+ <!-- Main Index
186
+
187
+ Values here override the values in the <indexDefaults> section
188
+ for the main on disk index.
189
+ -->
190
+ <mainIndex>
191
+
192
+ <useCompoundFile>false</useCompoundFile>
193
+ <ramBufferSizeMB>32</ramBufferSizeMB>
194
+ <mergeFactor>10</mergeFactor>
195
+
196
+ <!-- Unlock On Startup
197
+
198
+ If true, unlock any held write or commit locks on startup.
199
+ This defeats the locking mechanism that allows multiple
200
+ processes to safely access a lucene index, and should be used
201
+ with care.
202
+
203
+ This is not needed if lock type is 'none' or 'single'
204
+ -->
205
+ <unlockOnStartup>false</unlockOnStartup>
206
+
207
+ <!-- If true, IndexReaders will be reopened (often more efficient)
208
+ instead of closed and then opened.
209
+ -->
210
+ <reopenReaders>true</reopenReaders>
211
+
212
+ <!-- Commit Deletion Policy
213
+
214
+ Custom deletion policies can specified here. The class must
215
+ implement org.apache.lucene.index.IndexDeletionPolicy.
216
+
217
+ http://lucene.apache.org/java/2_9_1/api/all/org/apache/lucene/index/IndexDeletionPolicy.html
218
+
219
+ The standard Solr IndexDeletionPolicy implementation supports
220
+ deleting index commit points on number of commits, age of
221
+ commit point and optimized status.
222
+
223
+ The latest commit point should always be preserved regardless
224
+ of the criteria.
225
+ -->
226
+ <deletionPolicy class="solr.SolrDeletionPolicy">
227
+ <!-- The number of commit points to be kept -->
228
+ <str name="maxCommitsToKeep">1</str>
229
+ <!-- The number of optimized commit points to be kept -->
230
+ <str name="maxOptimizedCommitsToKeep">0</str>
231
+ <!--
232
+ Delete all commit points once they have reached the given age.
233
+ Supports DateMathParser syntax e.g.
234
+ -->
235
+ <!--
236
+ <str name="maxCommitAge">30MINUTES</str>
237
+ <str name="maxCommitAge">1DAY</str>
238
+ -->
239
+ </deletionPolicy>
240
+
241
+ <!-- Lucene Infostream
242
+
243
+ To aid in advanced debugging, Lucene provides an "InfoStream"
244
+ of detailed information when indexing.
245
+
246
+ Setting The value to true will instruct the underlying Lucene
247
+ IndexWriter to write its debugging info the specified file
248
+ -->
249
+ <infoStream file="INFOSTREAM.txt">false</infoStream>
250
+
251
+ </mainIndex>
252
+
253
+ <!-- JMX
254
+
255
+ This example enables JMX if and only if an existing MBeanServer
256
+ is found, use this if you want to configure JMX through JVM
257
+ parameters. Remove this to disable exposing Solr configuration
258
+ and statistics to JMX.
259
+
260
+ For more details see http://wiki.apache.org/solr/SolrJmx
261
+ -->
262
+ <jmx />
263
+ <!-- If you want to connect to a particular server, specify the
264
+ agentId
265
+ -->
266
+ <!-- <jmx agentId="myAgent" /> -->
267
+ <!-- If you want to start a new MBeanServer, specify the serviceUrl -->
268
+ <!-- <jmx serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr"/>
269
+ -->
270
+
271
+ <!-- The default high-performance update handler -->
272
+ <updateHandler class="solr.DirectUpdateHandler2">
273
+
274
+ <!-- AutoCommit
275
+
276
+ Perform a <commit/> automatically under certain conditions.
277
+ Instead of enabling autoCommit, consider using "commitWithin"
278
+ when adding documents.
279
+
280
+ http://wiki.apache.org/solr/UpdateXmlMessages
281
+
282
+ maxDocs - Maximum number of documents to add since the last
283
+ commit before automatically triggering a new commit.
284
+
285
+ maxTime - Maximum amount of time that is allowed to pass
286
+ since a document was added before automaticly
287
+ triggering a new commit.
288
+ -->
289
+ <!--
290
+ <autoCommit>
291
+ <maxDocs>10000</maxDocs>
292
+ <maxTime>1000</maxTime>
293
+ </autoCommit>
294
+ -->
295
+
296
+ <!-- Update Related Event Listeners
297
+
298
+ Various IndexWriter related events can trigger Listeners to
299
+ take actions.
300
+
301
+ postCommit - fired after every commit or optimize command
302
+ postOptimize - fired after every optimize command
303
+ -->
304
+ <!-- The RunExecutableListener executes an external command from a
305
+ hook such as postCommit or postOptimize.
306
+
307
+ exe - the name of the executable to run
308
+ dir - dir to use as the current working directory. (default=".")
309
+ wait - the calling thread waits until the executable returns.
310
+ (default="true")
311
+ args - the arguments to pass to the program. (default is none)
312
+ env - environment variables to set. (default is none)
313
+ -->
314
+ <!-- This example shows how RunExecutableListener could be used
315
+ with the script based replication...
316
+ http://wiki.apache.org/solr/CollectionDistribution
317
+ -->
318
+ <!--
319
+ <listener event="postCommit" class="solr.RunExecutableListener">
320
+ <str name="exe">solr/bin/snapshooter</str>
321
+ <str name="dir">.</str>
322
+ <bool name="wait">true</bool>
323
+ <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
324
+ <arr name="env"> <str>MYVAR=val1</str> </arr>
325
+ </listener>
326
+ -->
327
+ </updateHandler>
328
+
329
+ <!-- IndexReaderFactory
330
+
331
+ Use the following format to specify a custom IndexReaderFactory,
332
+ which allows for alternate IndexReader implementations.
333
+
334
+ ** Experimental Feature **
335
+
336
+ Please note - Using a custom IndexReaderFactory may prevent
337
+ certain other features from working. The API to
338
+ IndexReaderFactory may change without warning or may even be
339
+ removed from future releases if the problems cannot be
340
+ resolved.
341
+
342
+
343
+ ** Features that may not work with custom IndexReaderFactory **
344
+
345
+ The ReplicationHandler assumes a disk-resident index. Using a
346
+ custom IndexReader implementation may cause incompatibility
347
+ with ReplicationHandler and may cause replication to not work
348
+ correctly. See SOLR-1366 for details.
349
+
350
+ -->
351
+ <!--
352
+ <indexReaderFactory name="IndexReaderFactory" class="package.class">
353
+ <str name="someArg">Some Value</str>
354
+ </indexReaderFactory >
355
+ -->
356
+ <!-- By explicitly declaring the Factory, the termIndexDivisor can
357
+ be specified.
358
+ -->
359
+ <!--
360
+ <indexReaderFactory name="IndexReaderFactory"
361
+ class="solr.StandardIndexReaderFactory">
362
+ <int name="setTermIndexDivisor">12</int>
363
+ </indexReaderFactory >
364
+ -->
365
+
366
+
367
+ <query>
368
+ <!-- Max Boolean Clauses
369
+
370
+ Maximum number of clauses in each BooleanQuery, an exception
371
+ is thrown if exceeded.
372
+
373
+ ** WARNING **
374
+
375
+ This option actually modifies a global Lucene property that
376
+ will affect all SolrCores. If multiple solrconfig.xml files
377
+ disagree on this property, the value at any given moment will
378
+ be based on the last SolrCore to be initialized.
379
+
380
+ -->
381
+ <maxBooleanClauses>1024</maxBooleanClauses>
382
+
383
+
384
+ <!-- Solr Internal Query Caches
385
+
386
+ There are two implementations of cache available for Solr,
387
+ LRUCache, based on a synchronized LinkedHashMap, and
388
+ FastLRUCache, based on a ConcurrentHashMap.
389
+
390
+ FastLRUCache has faster gets and slower puts in single
391
+ threaded operation and thus is generally faster than LRUCache
392
+ when the hit ratio of the cache is high (> 75%), and may be
393
+ faster under other scenarios on multi-cpu systems.
394
+ -->
395
+
396
+ <!-- Filter Cache
397
+
398
+ Cache used by SolrIndexSearcher for filters (DocSets),
399
+ unordered sets of *all* documents that match a query. When a
400
+ new searcher is opened, its caches may be prepopulated or
401
+ "autowarmed" using data from caches in the old searcher.
402
+ autowarmCount is the number of items to prepopulate. For
403
+ LRUCache, the autowarmed items will be the most recently
404
+ accessed items.
405
+
406
+ Parameters:
407
+ class - the SolrCache implementation LRUCache or
408
+ (LRUCache or FastLRUCache)
409
+ size - the maximum number of entries in the cache
410
+ initialSize - the initial capacity (number of entries) of
411
+ the cache. (see java.util.HashMap)
412
+ autowarmCount - the number of entries to prepopulate from
413
+ and old cache.
414
+ -->
415
+ <filterCache class="solr.FastLRUCache"
416
+ size="512"
417
+ initialSize="512"
418
+ autowarmCount="0"/>
419
+
420
+ <!-- Query Result Cache
421
+
422
+ Caches results of searches - ordered lists of document ids
423
+ (DocList) based on a query, a sort, and the range of documents requested.
424
+ -->
425
+ <queryResultCache class="solr.LRUCache"
426
+ size="512"
427
+ initialSize="512"
428
+ autowarmCount="0"/>
429
+
430
+ <!-- Document Cache
431
+
432
+ Caches Lucene Document objects (the stored fields for each
433
+ document). Since Lucene internal document ids are transient,
434
+ this cache will not be autowarmed.
435
+ -->
436
+ <documentCache class="solr.LRUCache"
437
+ size="512"
438
+ initialSize="512"
439
+ autowarmCount="0"/>
440
+
441
+ <!-- Field Value Cache
442
+
443
+ Cache used to hold field values that are quickly accessible
444
+ by document id. The fieldValueCache is created by default
445
+ even if not configured here.
446
+ -->
447
+ <!--
448
+ <fieldValueCache class="solr.FastLRUCache"
449
+ size="512"
450
+ autowarmCount="128"
451
+ showItems="32" />
452
+ -->
453
+
454
+ <!-- Custom Cache
455
+
456
+ Example of a generic cache. These caches may be accessed by
457
+ name through SolrIndexSearcher.getCache(),cacheLookup(), and
458
+ cacheInsert(). The purpose is to enable easy caching of
459
+ user/application level data. The regenerator argument should
460
+ be specified as an implementation of solr.CacheRegenerator
461
+ if autowarming is desired.
462
+ -->
463
+ <!--
464
+ <cache name="myUserCache"
465
+ class="solr.LRUCache"
466
+ size="4096"
467
+ initialSize="1024"
468
+ autowarmCount="1024"
469
+ regenerator="com.mycompany.MyRegenerator"
470
+ />
471
+ -->
472
+
473
+
474
+ <!-- Lazy Field Loading
475
+
476
+ If true, stored fields that are not requested will be loaded
477
+ lazily. This can result in a significant speed improvement
478
+ if the usual case is to not load all stored fields,
479
+ especially if the skipped fields are large compressed text
480
+ fields.
481
+ -->
482
+ <enableLazyFieldLoading>true</enableLazyFieldLoading>
483
+
484
+ <!-- Use Filter For Sorted Query
485
+
486
+ A possible optimization that attempts to use a filter to
487
+ satisfy a search. If the requested sort does not include
488
+ score, then the filterCache will be checked for a filter
489
+ matching the query. If found, the filter will be used as the
490
+ source of document ids, and then the sort will be applied to
491
+ that.
492
+
493
+ For most situations, this will not be useful unless you
494
+ frequently get the same search repeatedly with different sort
495
+ options, and none of them ever use "score"
496
+ -->
497
+ <!--
498
+ <useFilterForSortedQuery>true</useFilterForSortedQuery>
499
+ -->
500
+
501
+ <!-- Result Window Size
502
+
503
+ An optimization for use with the queryResultCache. When a search
504
+ is requested, a superset of the requested number of document ids
505
+ are collected. For example, if a search for a particular query
506
+ requests matching documents 10 through 19, and queryWindowSize is 50,
507
+ then documents 0 through 49 will be collected and cached. Any further
508
+ requests in that range can be satisfied via the cache.
509
+ -->
510
+ <queryResultWindowSize>20</queryResultWindowSize>
511
+
512
+ <!-- Maximum number of documents to cache for any entry in the
513
+ queryResultCache.
514
+ -->
515
+ <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
516
+
517
+ <!-- Query Related Event Listeners
518
+
519
+ Various IndexSearcher related events can trigger Listeners to
520
+ take actions.
521
+
522
+ newSearcher - fired whenever a new searcher is being prepared
523
+ and there is a current searcher handling requests (aka
524
+ registered). It can be used to prime certain caches to
525
+ prevent long request times for certain requests.
526
+
527
+ firstSearcher - fired whenever a new searcher is being
528
+ prepared but there is no current registered searcher to handle
529
+ requests or to gain autowarming data from.
530
+
531
+
532
+ -->
533
+ <!-- QuerySenderListener takes an array of NamedList and executes a
534
+ local query request for each NamedList in sequence.
535
+ -->
536
+ <listener event="newSearcher" class="solr.QuerySenderListener">
537
+ <arr name="queries">
538
+ <!--
539
+ <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
540
+ <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
541
+ -->
542
+ </arr>
543
+ </listener>
544
+ <listener event="firstSearcher" class="solr.QuerySenderListener">
545
+ <arr name="queries">
546
+ <lst>
547
+ <str name="q">static firstSearcher warming in solrconfig.xml</str>
548
+ </lst>
549
+ </arr>
550
+ </listener>
551
+
552
+ <!-- Use Cold Searcher
553
+
554
+ If a search request comes in and there is no current
555
+ registered searcher, then immediately register the still
556
+ warming searcher and use it. If "false" then all requests
557
+ will block until the first searcher is done warming.
558
+ -->
559
+ <useColdSearcher>false</useColdSearcher>
560
+
561
+ <!-- Max Warming Searchers
562
+
563
+ Maximum number of searchers that may be warming in the
564
+ background concurrently. An error is returned if this limit
565
+ is exceeded.
566
+
567
+ Recommend values of 1-2 for read-only slaves, higher for
568
+ masters w/o cache warming.
569
+ -->
570
+ <maxWarmingSearchers>2</maxWarmingSearchers>
571
+
572
+ </query>
573
+
574
+
575
+ <!-- Request Dispatcher
576
+
577
+ This section contains instructions for how the SolrDispatchFilter
578
+ should behave when processing requests for this SolrCore.
579
+
580
+ handleSelect affects the behavior of requests such as /select?qt=XXX
581
+
582
+ handleSelect="true" will cause the SolrDispatchFilter to process
583
+ the request and will result in consistent error handling and
584
+ formatting for all types of requests.
585
+
586
+ handleSelect="false" will cause the SolrDispatchFilter to
587
+ ignore "/select" requests and fallback to using the legacy
588
+ SolrServlet and it's Solr 1.1 style error formatting
589
+ -->
590
+ <requestDispatcher handleSelect="true" >
591
+ <!-- Request Parsing
592
+
593
+ These settings indicate how Solr Requests may be parsed, and
594
+ what restrictions may be placed on the ContentStreams from
595
+ those requests
596
+
597
+ enableRemoteStreaming - enables use of the stream.file
598
+ and stream.url parameters for specifying remote streams.
599
+
600
+ multipartUploadLimitInKB - specifies the max size of
601
+ Multipart File Uploads that Solr will allow in a Request.
602
+
603
+ *** WARNING ***
604
+ The settings below authorize Solr to fetch remote files, You
605
+ should make sure your system has some authentication before
606
+ using enableRemoteStreaming="true"
607
+
608
+ -->
609
+ <requestParsers enableRemoteStreaming="true"
610
+ multipartUploadLimitInKB="2048000" />
611
+
612
+ <!-- HTTP Caching
613
+
614
+ Set HTTP caching related parameters (for proxy caches and clients).
615
+
616
+ The options below instruct Solr not to output any HTTP Caching
617
+ related headers
618
+ -->
619
+ <httpCaching never304="true" />
620
+ <!-- If you include a <cacheControl> directive, it will be used to
621
+ generate a Cache-Control header (as well as an Expires header
622
+ if the value contains "max-age=")
623
+
624
+ By default, no Cache-Control header is generated.
625
+
626
+ You can use the <cacheControl> option even if you have set
627
+ never304="true"
628
+ -->
629
+ <!--
630
+ <httpCaching never304="true" >
631
+ <cacheControl>max-age=30, public</cacheControl>
632
+ </httpCaching>
633
+ -->
634
+ <!-- To enable Solr to respond with automatically generated HTTP
635
+ Caching headers, and to response to Cache Validation requests
636
+ correctly, set the value of never304="false"
637
+
638
+ This will cause Solr to generate Last-Modified and ETag
639
+ headers based on the properties of the Index.
640
+
641
+ The following options can also be specified to affect the
642
+ values of these headers...
643
+
644
+ lastModFrom - the default value is "openTime" which means the
645
+ Last-Modified value (and validation against If-Modified-Since
646
+ requests) will all be relative to when the current Searcher
647
+ was opened. You can change it to lastModFrom="dirLastMod" if
648
+ you want the value to exactly correspond to when the physical
649
+ index was last modified.
650
+
651
+ etagSeed="..." is an option you can change to force the ETag
652
+ header (and validation against If-None-Match requests) to be
653
+ different even if the index has not changed (ie: when making
654
+ significant changes to your config file)
655
+
656
+ (lastModifiedFrom and etagSeed are both ignored if you use
657
+ the never304="true" option)
658
+ -->
659
+ <!--
660
+ <httpCaching lastModifiedFrom="openTime"
661
+ etagSeed="Solr">
662
+ <cacheControl>max-age=30, public</cacheControl>
663
+ </httpCaching>
664
+ -->
665
+ </requestDispatcher>
666
+
667
+ <!-- Request Handlers
668
+
669
+ http://wiki.apache.org/solr/SolrRequestHandler
670
+
671
+ incoming queries will be dispatched to the correct handler
672
+ based on the path or the qt (query type) param.
673
+
674
+ Names starting with a '/' are accessed with the a path equal to
675
+ the registered name. Names without a leading '/' are accessed
676
+ with: http://host/app/[core/]select?qt=name
677
+
678
+ If a /select request is processed with out a qt param
679
+ specified, the requestHandler that declares default="true" will
680
+ be used.
681
+
682
+ If a Request Handler is declared with startup="lazy", then it will
683
+ not be initialized until the first request that uses it.
684
+
685
+ -->
686
+
687
+ <!-- SearchHandler
688
+
689
+ http://wiki.apache.org/solr/SearchHandler
690
+
691
+ For processing Search Queries, the primary Request Handler
692
+ provided with Solr is "SearchHandler" It delegates to a sequent
693
+ of SearchComponents (see below) and supports distributed
694
+ queries across multiple shards
695
+ -->
696
+ <requestHandler name="standard" class="solr.SearchHandler" default="true">
697
+ <!-- default values for query parameters -->
698
+ <lst name="defaults">
699
+ <str name="echoParams">explicit</str>
700
+ <!--
701
+ <int name="rows">10</int>
702
+ <str name="fl">*</str>
703
+ <str name="version">2.1</str>
704
+ -->
705
+ </lst>
706
+ </requestHandler>
707
+ <!-- SearchHandler
708
+
709
+ http://wiki.apache.org/solr/SearchHandler
710
+
711
+ For processing Search Queries, the primary Request Handler
712
+ provided with Solr is "SearchHandler" It delegates to a sequent
713
+ of SearchComponents (see below) and supports distributed
714
+ queries across multiple shards
715
+ -->
716
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
717
+ <!-- default values for query parameters can be specified, these
718
+ will be overridden by parameters in the request
719
+ -->
720
+ <lst name="defaults">
721
+ <str name="defType">dismax</str>
722
+ <str name="echoParams">explicit</str>
723
+ <int name="rows">10</int>
724
+
725
+ <str name="q.alt">*:*</str>
726
+ <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
727
+
728
+ <!-- this qf and pf are used by default, if not otherwise specified by
729
+ client. The default blacklight_config will use these for the
730
+ "keywords" search. See the author_qf/author_pf, title_qf, etc
731
+ below, which the default blacklight_config will specify for
732
+ those searches. You may also be interested in:
733
+ http://wiki.apache.org/solr/LocalParams
734
+ -->
735
+
736
+ <str name="qf">
737
+ title_unstem_search^100000
738
+ subtitle_unstem_search^50000
739
+ title_t^25000
740
+ subtitle_t^10000
741
+ title_addl_unstem_search^5000
742
+ title_addl_t^2500
743
+ title_added_entry_unstem_search^1500
744
+ title_added_entry_t^1250
745
+ subject_topic_unstem_search^1000
746
+ subject_unstem_search^750
747
+ subject_topic_facet^625
748
+ subject_t^500
749
+ author_unstem_search^250
750
+ author_addl_unstem_search^250
751
+ author_t^100
752
+ author_addl_t^50
753
+ subject_addl_unstem_search^250
754
+ subject_addl_t^50
755
+ title_series_unstem_search^25
756
+ title_series_t^10
757
+ isbn_t
758
+ issn_t
759
+ category_facet
760
+ text
761
+ </str>
762
+ <str name="pf">
763
+ title_unstem_search^1000000
764
+ subtitle_unstem_search^500000
765
+ title_t^250000
766
+ subtitle_t^100000
767
+ title_addl_unstem_search^50000
768
+ title_addl_t^25000
769
+ title_added_entry_unstem_search^15000
770
+ title_added_entry_t^12500
771
+ subject_topic_unstem_search^10000
772
+ subject_unstem_search^7500
773
+ subject_topic_facet^6250
774
+ subject_t^5000
775
+ author_unstem_search^2500
776
+ author_addl_unstem_search^2500
777
+ author_t^1000
778
+ author_addl_t^500
779
+ subject_addl_unstem_search^2500
780
+ subject_addl_t^500
781
+ title_series_unstem_search^250
782
+ title_series_t^100
783
+ text^10
784
+ </str>
785
+ <str name="author_qf">
786
+ author_unstem_search^200
787
+ author_addl_unstem_search^50
788
+ author_t^20
789
+ author_addl_t
790
+ </str>
791
+ <str name="author_pf">
792
+ author_unstem_search^2000
793
+ author_addl_unstem_search^500
794
+ author_t^200
795
+ author_addl_t^10
796
+ </str>
797
+ <str name="title_qf">
798
+ title_unstem_search^50000
799
+ subtitle_unstem_search^25000
800
+ title_addl_unstem_search^10000
801
+ title_t^5000
802
+ subtitle_t^2500
803
+ title_addl_t^100
804
+ title_added_entry_unstem_search^50
805
+ title_added_entry_t^10
806
+ title_series_unstem_search^5
807
+ title_series_t
808
+ </str>
809
+ <str name="title_pf">
810
+ title_unstem_search^500000
811
+ subtitle_unstem_search^250000
812
+ title_addl_unstem_search^100000
813
+ title_t^50000
814
+ subtitle_t^25000
815
+ title_addl_t^1000
816
+ title_added_entry_unstem_search^500
817
+ title_added_entry_t^100
818
+ title_series_t^50
819
+ title_series_unstem_search^10
820
+ </str>
821
+ <str name="subject_qf">
822
+ subject_topic_unstem_search^200
823
+ subject_unstem_search^125
824
+ subject_topic_facet^100
825
+ subject_t^50
826
+ subject_addl_unstem_search^10
827
+ subject_addl_t
828
+ </str>
829
+ <str name="subject_pf">
830
+ subject_topic_unstem_search^2000
831
+ subject_unstem_search^1250
832
+ subject_t^1000
833
+ subject_topic_facet^500
834
+ subject_addl_unstem_search^100
835
+ subject_addl_t^10
836
+ </str>
837
+
838
+ <int name="ps">3</int>
839
+ <float name="tie">0.01</float>
840
+
841
+ <!-- NOT using marc_display because it is large and will slow things down for search results -->
842
+ <str name="fl">
843
+ id,
844
+ score,
845
+ author_display,
846
+ author_vern_display,
847
+ format,
848
+ isbn_t,
849
+ issn_t,
850
+ category_facet,
851
+ language_facet,
852
+ lc_callnum_display,
853
+ material_type_display,
854
+ published_display,
855
+ published_vern_display,
856
+ pub_date,
857
+ title_display,
858
+ title_vern_display,
859
+ subject_topic_facet,
860
+ subject_geo_facet,
861
+ subject_era_facet,
862
+ subtitle_display,
863
+ subtitle_vern_display,
864
+ url_fulltext_display,
865
+ url_suppl_display,
866
+ </str>
867
+
868
+ <str name="facet">true</str>
869
+ <str name="facet.mincount">1</str>
870
+ <str name="facet.limit">-1</str>
871
+ <str name="facet.sort">index</str>
872
+ <str name="facet.field">format</str>
873
+ <str name="facet.field">lc_1letter_facet</str>
874
+ <str name="facet.field">lc_alpha_facet</str>
875
+ <str name="facet.field">lc_b4cutter_facet</str>
876
+ <str name="facet.field">language_facet</str>
877
+ <str name="facet.field">pub_date</str>
878
+ <str name="facet.field">subject_era_facet</str>
879
+ <str name="facet.field">subject_geo_facet</str>
880
+ <str name="facet.field">subject_topic_facet</str>
881
+
882
+ <str name="f.provider_facet.facet.sort">count</str>
883
+
884
+ <str name="spellcheck">true</str>
885
+ <str name="spellcheck.dictionary">default</str>
886
+ <str name="spellcheck.onlyMorePopular">true</str>
887
+ <str name="spellcheck.extendedResults">true</str>
888
+ <str name="spellcheck.collate">false</str>
889
+ <str name="spellcheck.count">5</str>
890
+
891
+ </lst>
892
+ <!-- In addition to defaults, "appends" params can be specified
893
+ to identify values which should be appended to the list of
894
+ multi-val params from the query (or the existing "defaults").
895
+ -->
896
+ <!-- In this example, the param "fq=instock:true" would be appended to
897
+ any query time fq params the user may specify, as a mechanism for
898
+ partitioning the index, independent of any user selected filtering
899
+ that may also be desired (perhaps as a result of faceted searching).
900
+
901
+ NOTE: there is *absolutely* nothing a client can do to prevent these
902
+ "appends" values from being used, so don't use this mechanism
903
+ unless you are sure you always want it.
904
+ -->
905
+ <!--
906
+ <lst name="appends">
907
+ <str name="fq">inStock:true</str>
908
+ </lst>
909
+ -->
910
+ <!-- "invariants" are a way of letting the Solr maintainer lock down
911
+ the options available to Solr clients. Any params values
912
+ specified here are used regardless of what values may be specified
913
+ in either the query, the "defaults", or the "appends" params.
914
+
915
+ In this example, the facet.field and facet.query params would
916
+ be fixed, limiting the facets clients can use. Faceting is
917
+ not turned on by default - but if the client does specify
918
+ facet=true in the request, these are the only facets they
919
+ will be able to see counts for; regardless of what other
920
+ facet.field or facet.query params they may specify.
921
+
922
+ NOTE: there is *absolutely* nothing a client can do to prevent these
923
+ "invariants" values from being used, so don't use this mechanism
924
+ unless you are sure you always want it.
925
+ -->
926
+ <!--
927
+ <lst name="invariants">
928
+ <str name="facet.field">cat</str>
929
+ <str name="facet.field">manu_exact</str>
930
+ <str name="facet.query">price:[* TO 500]</str>
931
+ <str name="facet.query">price:[500 TO *]</str>
932
+ </lst>
933
+ -->
934
+ <!-- If the default list of SearchComponents is not desired, that
935
+ list can either be overridden completely, or components can be
936
+ prepended or appended to the default list. (see below)
937
+ -->
938
+ <!--
939
+ <arr name="components">
940
+ <str>nameOfCustomComponent1</str>
941
+ <str>nameOfCustomComponent2</str>
942
+ </arr>
943
+ -->
944
+ <arr name="last-components">
945
+ <str>spellcheck</str>
946
+ </arr>
947
+
948
+ </requestHandler>
949
+
950
+ <!-- for requests to get a single document; use id=666 instead of q=id:666 -->
951
+ <requestHandler name="document" class="solr.SearchHandler" >
952
+ <lst name="defaults">
953
+ <str name="echoParams">all</str>
954
+ <str name="fl">*</str>
955
+ <str name="rows">1</str>
956
+ <str name="q">{!raw f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
957
+ </lst>
958
+ </requestHandler>
959
+
960
+ <!-- For Advanced Search -->
961
+ <requestHandler name="advanced" class="solr.SearchHandler" >
962
+ <lst name="defaults">
963
+ <str name="defType">lucene</str>
964
+ <str name="echoParams">explicit</str>
965
+ <str name="sort">score desc, pub_date_sort desc, title_sort asc</str>
966
+ <str name="df">text</str>
967
+ <str name="q.op">AND</str>
968
+ <str name="qs">1</str>
969
+
970
+ <!-- used for dismax query parser -->
971
+ <str name="mm">1</str>
972
+ <str name="ps">3</str>
973
+ <float name="tie">0.01</float>
974
+
975
+ <!-- for user query terms in author text box -->
976
+ <str name="qf_author">
977
+ author_unstem_search^200
978
+ author_addl_unstem_search^50
979
+ author_t^20
980
+ author_addl_t
981
+ </str>
982
+ <str name="pf_author">
983
+ author_unstem_search^2000
984
+ author_addl_unstem_search^500
985
+ author_t^200
986
+ author_addl_t^10
987
+ </str>
988
+
989
+ <!-- for user query terms in title text box -->
990
+ <str name="qf_title">
991
+ title_unstem_search^50000
992
+ subtitle_unstem_search^25000
993
+ title_addl_unstem_search^10000
994
+ title_t^5000
995
+ subtitle_t^2500
996
+ title_addl_t^100
997
+ title_added_entry_unstem_search^50
998
+ title_added_entry_t^10
999
+ title_series_unstem_search^5
1000
+ title_series_t
1001
+ </str>
1002
+ <str name="pf_title">
1003
+ title_unstem_search^500000
1004
+ subtitle_unstem_search^250000
1005
+ title_addl_unstem_search^100000
1006
+ title_t^50000
1007
+ subtitle_t^25000
1008
+ title_addl_t^1000
1009
+ title_added_entry_unstem_search^500
1010
+ title_added_entry_t^100
1011
+ title_series_t^50
1012
+ title_series_unstem_search^10
1013
+ </str>
1014
+
1015
+ <!-- for user query terms in subject text box -->
1016
+ <str name="qf_subject">
1017
+ subject_topic_unstem_search^200
1018
+ subject_unstem_search^125
1019
+ subject_topic_facet^100
1020
+ subject_t^50
1021
+ subject_addl_unstem_search^10
1022
+ subject_addl_t
1023
+ </str>
1024
+ <str name="pf_subject">
1025
+ subject_topic_unstem_search^2000
1026
+ subject_unstem_search^1250
1027
+ subject_t^1000
1028
+ subject_topic_facet^500
1029
+ subject_addl_unstem_search^100
1030
+ subject_addl_t^10
1031
+ </str>
1032
+
1033
+ <!-- for user query terms in number text box -->
1034
+ <str name="qf_number">isbn_t</str>
1035
+
1036
+ <!-- for user query terms in keyword text box -->
1037
+ <str name="qf_keyword">text</str>
1038
+ <str name="pf_keyword">text^10</str>
1039
+
1040
+ <!-- NOT using marc_display because it is large and will slow things down for search results -->
1041
+ <str name="fl">
1042
+ id,
1043
+ score,
1044
+ author_display,
1045
+ author_vern_display,
1046
+ format,
1047
+ isbn_t,
1048
+ issn_t,
1049
+ category_facet,
1050
+ language_facet,
1051
+ lc_callnum_display,
1052
+ material_type_display,
1053
+ published_display,
1054
+ published_vern_display,
1055
+ pub_date,
1056
+ title_display,
1057
+ title_vern_display,
1058
+ subject_topic_facet,
1059
+ subject_geo_facet,
1060
+ subject_era_facet,
1061
+ subtitle_display,
1062
+ subtitle_vern_display,
1063
+ url_fulltext_display,
1064
+ url_suppl_display,
1065
+ </str>
1066
+
1067
+ <str name="facet">true</str>
1068
+ <str name="facet.mincount">1</str>
1069
+ <str name="facet.limit">10</str>
1070
+ <str name="facet.field">format</str>
1071
+ <str name="facet.field">lc_1letter_facet</str>
1072
+ <str name="facet.field">lc_alpha_facet</str>
1073
+ <str name="facet.field">lc_b4cutter_facet</str>
1074
+ <str name="facet.field">language_facet</str>
1075
+ <str name="facet.field">pub_date</str>
1076
+ <str name="facet.field">subject_era_facet</str>
1077
+ <str name="facet.field">subject_geo_facet</str>
1078
+ <str name="facet.field">subject_topic_facet</str>
1079
+
1080
+ <str name="spellcheck">true</str>
1081
+ <str name="spellcheck.dictionary">subject</str>
1082
+ <str name="spellcheck.onlyMorePopular">true</str>
1083
+ <str name="spellcheck.extendedResults">true</str>
1084
+ <str name="spellcheck.collate">false</str>
1085
+ <str name="spellcheck.count">5</str>
1086
+ </lst>
1087
+ <arr name="last-components">
1088
+ <str>spellcheck</str>
1089
+ </arr>
1090
+ </requestHandler>
1091
+
1092
+
1093
+ <!-- XML Update Request Handler.
1094
+
1095
+ http://wiki.apache.org/solr/UpdateXmlMessages
1096
+
1097
+ The canonical Request Handler for Modifying the Index through
1098
+ commands specified using XML.
1099
+
1100
+ Note: Since solr1.1 requestHandlers requires a valid content
1101
+ type header if posted in the body. For example, curl now
1102
+ requires: -H 'Content-type:text/xml; charset=utf-8'
1103
+ -->
1104
+ <requestHandler name="/update"
1105
+ class="solr.XmlUpdateRequestHandler">
1106
+ <!-- See below for information on defining
1107
+ updateRequestProcessorChains that can be used by name
1108
+ on each Update Request
1109
+ -->
1110
+ <!--
1111
+ <lst name="defaults">
1112
+ <str name="update.chain">dedupe</str>
1113
+ </lst>
1114
+ -->
1115
+ </requestHandler>
1116
+ <!-- Binary Update Request Handler
1117
+ http://wiki.apache.org/solr/javabin
1118
+ -->
1119
+ <requestHandler name="/update/javabin"
1120
+ class="solr.BinaryUpdateRequestHandler" />
1121
+
1122
+ <!-- CSV Update Request Handler
1123
+ http://wiki.apache.org/solr/UpdateCSV
1124
+ -->
1125
+ <requestHandler name="/update/csv"
1126
+ class="solr.CSVRequestHandler"
1127
+ startup="lazy" />
1128
+
1129
+ <!-- JSON Update Request Handler
1130
+ http://wiki.apache.org/solr/UpdateJSON
1131
+ -->
1132
+ <requestHandler name="/update/json"
1133
+ class="solr.JsonUpdateRequestHandler"
1134
+ startup="lazy" />
1135
+
1136
+ <!-- Solr Cell Update Request Handler
1137
+
1138
+ http://wiki.apache.org/solr/ExtractingRequestHandler
1139
+
1140
+ -->
1141
+ <requestHandler name="/update/extract"
1142
+ startup="lazy"
1143
+ class="solr.extraction.ExtractingRequestHandler" >
1144
+ <lst name="defaults">
1145
+ <!-- All the main content goes into "text"... if you need to return
1146
+ the extracted text or do highlighting, use a stored field. -->
1147
+ <str name="fmap.content">text</str>
1148
+ <str name="lowernames">true</str>
1149
+ <str name="uprefix">ignored_</str>
1150
+
1151
+ <!-- capture link hrefs but ignore div attributes -->
1152
+ <str name="captureAttr">true</str>
1153
+ <str name="fmap.a">links</str>
1154
+ <str name="fmap.div">ignored_</str>
1155
+ </lst>
1156
+ </requestHandler>
1157
+
1158
+ <!-- Field Analysis Request Handler
1159
+
1160
+ RequestHandler that provides much the same functionality as
1161
+ analysis.jsp. Provides the ability to specify multiple field
1162
+ types and field names in the same request and outputs
1163
+ index-time and query-time analysis for each of them.
1164
+
1165
+ Request parameters are:
1166
+ analysis.fieldname - field name whose analyzers are to be used
1167
+
1168
+ analysis.fieldtype - field type whose analyzers are to be used
1169
+ analysis.fieldvalue - text for index-time analysis
1170
+ q (or analysis.q) - text for query time analysis
1171
+ analysis.showmatch (true|false) - When set to true and when
1172
+ query analysis is performed, the produced tokens of the
1173
+ field value analysis will be marked as "matched" for every
1174
+ token that is produces by the query analysis
1175
+ -->
1176
+ <requestHandler name="/analysis/field"
1177
+ startup="lazy"
1178
+ class="solr.FieldAnalysisRequestHandler" />
1179
+
1180
+
1181
+ <!-- Document Analysis Handler
1182
+
1183
+ http://wiki.apache.org/solr/AnalysisRequestHandler
1184
+
1185
+ An analysis handler that provides a breakdown of the analysis
1186
+ process of provided docuemnts. This handler expects a (single)
1187
+ content stream with the following format:
1188
+
1189
+ <docs>
1190
+ <doc>
1191
+ <field name="id">1</field>
1192
+ <field name="name">The Name</field>
1193
+ <field name="text">The Text Value</field>
1194
+ </doc>
1195
+ <doc>...</doc>
1196
+ <doc>...</doc>
1197
+ ...
1198
+ </docs>
1199
+
1200
+ Note: Each document must contain a field which serves as the
1201
+ unique key. This key is used in the returned response to associate
1202
+ an analysis breakdown to the analyzed document.
1203
+
1204
+ Like the FieldAnalysisRequestHandler, this handler also supports
1205
+ query analysis by sending either an "analysis.query" or "q"
1206
+ request parameter that holds the query text to be analyzed. It
1207
+ also supports the "analysis.showmatch" parameter which when set to
1208
+ true, all field tokens that match the query tokens will be marked
1209
+ as a "match".
1210
+ -->
1211
+ <requestHandler name="/analysis/document"
1212
+ class="solr.DocumentAnalysisRequestHandler"
1213
+ startup="lazy" />
1214
+
1215
+ <!-- Admin Handlers
1216
+
1217
+ Admin Handlers - This will register all the standard admin
1218
+ RequestHandlers.
1219
+ -->
1220
+ <requestHandler name="/admin/"
1221
+ class="solr.admin.AdminHandlers" />
1222
+ <!-- This single handler is equivalent to the following... -->
1223
+ <!--
1224
+ <requestHandler name="/admin/luke" class="solr.admin.LukeRequestHandler" />
1225
+ <requestHandler name="/admin/system" class="solr.admin.SystemInfoHandler" />
1226
+ <requestHandler name="/admin/plugins" class="solr.admin.PluginInfoHandler" />
1227
+ <requestHandler name="/admin/threads" class="solr.admin.ThreadDumpHandler" />
1228
+ <requestHandler name="/admin/properties" class="solr.admin.PropertiesRequestHandler" />
1229
+ <requestHandler name="/admin/file" class="solr.admin.ShowFileRequestHandler" >
1230
+ -->
1231
+ <!-- If you wish to hide files under ${solr.home}/conf, explicitly
1232
+ register the ShowFileRequestHandler using:
1233
+ -->
1234
+ <!--
1235
+ <requestHandler name="/admin/file"
1236
+ class="solr.admin.ShowFileRequestHandler" >
1237
+ <lst name="invariants">
1238
+ <str name="hidden">synonyms.txt</str>
1239
+ <str name="hidden">anotherfile.txt</str>
1240
+ </lst>
1241
+ </requestHandler>
1242
+ -->
1243
+
1244
+ <!-- ping/healthcheck -->
1245
+ <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
1246
+ <lst name="defaults">
1247
+ <str name="qt">search</str>
1248
+ <str name="q">solrpingquery</str>
1249
+ <str name="echoParams">all</str>
1250
+ </lst>
1251
+ </requestHandler>
1252
+
1253
+ <!-- Echo the request contents back to the client -->
1254
+ <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
1255
+ <lst name="defaults">
1256
+ <str name="echoParams">explicit</str>
1257
+ <str name="echoHandler">true</str>
1258
+ </lst>
1259
+ </requestHandler>
1260
+
1261
+ <!-- Solr Replication
1262
+
1263
+ The SolrReplicationHandler supports replicating indexes from a
1264
+ "master" used for indexing and "salves" used for queries.
1265
+
1266
+ http://wiki.apache.org/solr/SolrReplication
1267
+
1268
+ In the example below, remove the <lst name="master"> section if
1269
+ this is just a slave and remove the <lst name="slave"> section
1270
+ if this is just a master.
1271
+ -->
1272
+ <!--
1273
+ <requestHandler name="/replication" class="solr.ReplicationHandler" >
1274
+ <lst name="master">
1275
+ <str name="replicateAfter">commit</str>
1276
+ <str name="replicateAfter">startup</str>
1277
+ <str name="confFiles">schema.xml,stopwords.txt</str>
1278
+ </lst>
1279
+ <lst name="slave">
1280
+ <str name="masterUrl">http://localhost:8983/solr/replication</str>
1281
+ <str name="pollInterval">00:00:60</str>
1282
+ </lst>
1283
+ </requestHandler>
1284
+ -->
1285
+
1286
+ <!-- Search Components
1287
+
1288
+ Search components are registered to SolrCore and used by
1289
+ instances of SearchHandler (which can access them by name)
1290
+
1291
+ By default, the following components are available:
1292
+
1293
+ <searchComponent name="query" class="solr.QueryComponent" />
1294
+ <searchComponent name="facet" class="solr.FacetComponent" />
1295
+ <searchComponent name="mlt" class="solr.MoreLikeThisComponent" />
1296
+ <searchComponent name="highlight" class="solr.HighlightComponent" />
1297
+ <searchComponent name="stats" class="solr.StatsComponent" />
1298
+ <searchComponent name="debug" class="solr.DebugComponent" />
1299
+
1300
+ Default configuration in a requestHandler would look like:
1301
+
1302
+ <arr name="components">
1303
+ <str>query</str>
1304
+ <str>facet</str>
1305
+ <str>mlt</str>
1306
+ <str>highlight</str>
1307
+ <str>stats</str>
1308
+ <str>debug</str>
1309
+ </arr>
1310
+
1311
+ If you register a searchComponent to one of the standard names,
1312
+ that will be used instead of the default.
1313
+
1314
+ To insert components before or after the 'standard' components, use:
1315
+
1316
+ <arr name="first-components">
1317
+ <str>myFirstComponentName</str>
1318
+ </arr>
1319
+
1320
+ <arr name="last-components">
1321
+ <str>myLastComponentName</str>
1322
+ </arr>
1323
+
1324
+ NOTE: The component registered with the name "debug" will
1325
+ always be executed after the "last-components"
1326
+
1327
+ -->
1328
+
1329
+ <!-- Spell Check
1330
+
1331
+ The spell check component can return a list of alternative spelling
1332
+ suggestions.
1333
+
1334
+ http://wiki.apache.org/solr/SpellCheckComponent
1335
+ -->
1336
+ <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
1337
+
1338
+ <str name="queryAnalyzerFieldType">textSpell</str>
1339
+
1340
+ <!-- Multiple "Spell Checkers" can be declared and used by this
1341
+ component
1342
+ -->
1343
+
1344
+ <!-- a spellchecker built from a field of the main index, and
1345
+ written to disk
1346
+ -->
1347
+ <lst name="spellchecker">
1348
+ <str name="name">default</str>
1349
+ <str name="field">spell</str>
1350
+ <str name="spellcheckIndexDir">./spell</str>
1351
+ <str name="buildOnOptimize">true</str>
1352
+ </lst>
1353
+ <lst name="spellchecker">
1354
+ <str name="name">author</str>
1355
+ <str name="field">author_spell</str>
1356
+ <str name="spellcheckIndexDir">./spell_author</str>
1357
+ <str name="accuracy">0.7</str>
1358
+ <str name="buildOnOptimize">true</str>
1359
+ </lst>
1360
+ <lst name="spellchecker">
1361
+ <str name="name">subject</str>
1362
+ <str name="field">subject_spell</str>
1363
+ <str name="spellcheckIndexDir">./spell_subject</str>
1364
+ <str name="accuracy">0.7</str>
1365
+ <str name="buildOnOptimize">true</str>
1366
+ </lst>
1367
+ <lst name="spellchecker">
1368
+ <str name="name">title</str>
1369
+ <str name="field">title_spell</str>
1370
+ <str name="spellcheckIndexDir">./spell_title</str>
1371
+ <str name="accuracy">0.7</str>
1372
+ <str name="buildOnOptimize">true</str>
1373
+ </lst>
1374
+
1375
+ <!-- a spellchecker that uses a different distance measure -->
1376
+ <!--
1377
+ <lst name="spellchecker">
1378
+ <str name="name">jarowinkler</str>
1379
+ <str name="field">spell</str>
1380
+ <str name="distanceMeasure">
1381
+ org.apache.lucene.search.spell.JaroWinklerDistance
1382
+ </str>
1383
+ <str name="spellcheckIndexDir">spellcheckerJaro</str>
1384
+ </lst>
1385
+ -->
1386
+
1387
+ <!-- a spellchecker that use an alternate comparator
1388
+
1389
+ comparatorClass be one of:
1390
+ 1. score (default)
1391
+ 2. freq (Frequency first, then score)
1392
+ 3. A fully qualified class name
1393
+ -->
1394
+ <!--
1395
+ <lst name="spellchecker">
1396
+ <str name="name">freq</str>
1397
+ <str name="field">lowerfilt</str>
1398
+ <str name="spellcheckIndexDir">spellcheckerFreq</str>
1399
+ <str name="comparatorClass">freq</str>
1400
+ <str name="buildOnCommit">true</str>
1401
+ -->
1402
+
1403
+ <!-- A spellchecker that reads the list of words from a file -->
1404
+ <!--
1405
+ <lst name="spellchecker">
1406
+ <str name="classname">solr.FileBasedSpellChecker</str>
1407
+ <str name="name">file</str>
1408
+ <str name="sourceLocation">spellings.txt</str>
1409
+ <str name="characterEncoding">UTF-8</str>
1410
+ <str name="spellcheckIndexDir">spellcheckerFile</str>
1411
+ </lst>
1412
+ -->
1413
+ </searchComponent>
1414
+
1415
+ <!-- A request handler for demonstrating the spellcheck component.
1416
+
1417
+ NOTE: This is purely as an example. The whole purpose of the
1418
+ SpellCheckComponent is to hook it into the request handler that
1419
+ handles your normal user queries so that a separate request is
1420
+ not needed to get suggestions.
1421
+
1422
+ IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS
1423
+ NOT WHAT YOU WANT FOR YOUR PRODUCTION SYSTEM!
1424
+
1425
+ See http://wiki.apache.org/solr/SpellCheckComponent for details
1426
+ on the request parameters.
1427
+ -->
1428
+ <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
1429
+ <lst name="defaults">
1430
+ <str name="spellcheck.onlyMorePopular">false</str>
1431
+ <str name="spellcheck.extendedResults">false</str>
1432
+ <str name="spellcheck.count">1</str>
1433
+ </lst>
1434
+ <arr name="last-components">
1435
+ <str>spellcheck</str>
1436
+ </arr>
1437
+ </requestHandler>
1438
+
1439
+ <!-- Term Vector Component
1440
+
1441
+ http://wiki.apache.org/solr/TermVectorComponent
1442
+ -->
1443
+ <searchComponent name="tvComponent" class="solr.TermVectorComponent"/>
1444
+
1445
+ <!-- A request handler for demonstrating the term vector component
1446
+
1447
+ This is purely as an example.
1448
+
1449
+ In reality you will likely want to add the component to your
1450
+ already specified request handlers.
1451
+ -->
1452
+ <requestHandler name="tvrh" class="solr.SearchHandler" startup="lazy">
1453
+ <lst name="defaults">
1454
+ <bool name="tv">true</bool>
1455
+ </lst>
1456
+ <arr name="last-components">
1457
+ <str>tvComponent</str>
1458
+ </arr>
1459
+ </requestHandler>
1460
+
1461
+ <!-- Clustering Component
1462
+
1463
+ http://wiki.apache.org/solr/ClusteringComponent
1464
+
1465
+ This relies on third party jars which are notincluded in the
1466
+ release. To use this component (and the "/clustering" handler)
1467
+ Those jars will need to be downloaded, and you'll need to set
1468
+ the solr.cluster.enabled system property when running solr...
1469
+
1470
+ java -Dsolr.clustering.enabled=true -jar start.jar
1471
+ -->
1472
+ <searchComponent name="clustering"
1473
+ enable="${solr.clustering.enabled:false}"
1474
+ class="solr.clustering.ClusteringComponent" >
1475
+ <!-- Declare an engine -->
1476
+ <lst name="engine">
1477
+ <!-- The name, only one can be named "default" -->
1478
+ <str name="name">default</str>
1479
+
1480
+ <!-- Class name of Carrot2 clustering algorithm.
1481
+
1482
+ Currently available algorithms are:
1483
+
1484
+ * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
1485
+ * org.carrot2.clustering.stc.STCClusteringAlgorithm
1486
+ * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm
1487
+
1488
+ See http://project.carrot2.org/algorithms.html for the
1489
+ algorithm's characteristics.
1490
+ -->
1491
+ <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
1492
+
1493
+ <!-- Overriding values for Carrot2 default algorithm attributes.
1494
+
1495
+ For a description of all available attributes, see:
1496
+ http://download.carrot2.org/stable/manual/#chapter.components.
1497
+ Use attribute key as name attribute of str elements
1498
+ below. These can be further overridden for individual
1499
+ requests by specifying attribute key as request parameter
1500
+ name and attribute value as parameter value.
1501
+ -->
1502
+ <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
1503
+
1504
+ <!-- Location of Carrot2 lexical resources.
1505
+
1506
+ A directory from which to load Carrot2-specific stop words
1507
+ and stop labels. Absolute or relative to Solr config directory.
1508
+ If a specific resource (e.g. stopwords.en) is present in the
1509
+ specified dir, it will completely override the corresponding
1510
+ default one that ships with Carrot2.
1511
+
1512
+ For an overview of Carrot2 lexical resources, see:
1513
+ http://download.carrot2.org/head/manual/#chapter.lexical-resources
1514
+ -->
1515
+ <str name="carrot.lexicalResourcesDir">clustering/carrot2</str>
1516
+
1517
+ <!-- The language to assume for the documents.
1518
+
1519
+ For a list of allowed values, see:
1520
+ http://download.carrot2.org/stable/manual/#section.attribute.lingo.MultilingualClustering.defaultLanguage
1521
+ -->
1522
+ <str name="MultilingualClustering.defaultLanguage">ENGLISH</str>
1523
+ </lst>
1524
+ <lst name="engine">
1525
+ <str name="name">stc</str>
1526
+ <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
1527
+ </lst>
1528
+ </searchComponent>
1529
+
1530
+ <!-- A request handler for demonstrating the clustering component
1531
+
1532
+ This is purely as an example.
1533
+
1534
+ In reality you will likely want to add the component to your
1535
+ already specified request handlers.
1536
+ -->
1537
+ <requestHandler name="/clustering"
1538
+ startup="lazy"
1539
+ enable="${solr.clustering.enabled:false}"
1540
+ class="solr.SearchHandler">
1541
+ <lst name="defaults">
1542
+ <bool name="clustering">true</bool>
1543
+ <str name="clustering.engine">default</str>
1544
+ <bool name="clustering.results">true</bool>
1545
+ <!-- The title field -->
1546
+ <str name="carrot.title">name</str>
1547
+ <str name="carrot.url">id</str>
1548
+ <!-- The field to cluster on -->
1549
+ <str name="carrot.snippet">features</str>
1550
+ <!-- produce summaries -->
1551
+ <bool name="carrot.produceSummary">true</bool>
1552
+ <!-- the maximum number of labels per cluster -->
1553
+ <!--<int name="carrot.numDescriptions">5</int>-->
1554
+ <!-- produce sub clusters -->
1555
+ <bool name="carrot.outputSubClusters">false</bool>
1556
+
1557
+ <str name="defType">edismax</str>
1558
+ <str name="qf">
1559
+ text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
1560
+ </str>
1561
+ <str name="q.alt">*:*</str>
1562
+ <str name="rows">10</str>
1563
+ <str name="fl">*,score</str>
1564
+ </lst>
1565
+ <arr name="last-components">
1566
+ <str>clustering</str>
1567
+ </arr>
1568
+ </requestHandler>
1569
+
1570
+ <!-- Terms Component
1571
+
1572
+ http://wiki.apache.org/solr/TermsComponent
1573
+
1574
+ A component to return terms and document frequency of those
1575
+ terms
1576
+ -->
1577
+ <searchComponent name="terms" class="solr.TermsComponent"/>
1578
+
1579
+ <!-- A request handler for demonstrating the terms component -->
1580
+ <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">
1581
+ <lst name="defaults">
1582
+ <bool name="terms">true</bool>
1583
+ </lst>
1584
+ <arr name="components">
1585
+ <str>terms</str>
1586
+ </arr>
1587
+ </requestHandler>
1588
+
1589
+
1590
+ <!-- Query Elevation Component
1591
+
1592
+ http://wiki.apache.org/solr/QueryElevationComponent
1593
+
1594
+ a search component that enables you to configure the top
1595
+ results for a given query regardless of the normal lucene
1596
+ scoring.
1597
+ -->
1598
+ <searchComponent name="elevator" class="solr.QueryElevationComponent" >
1599
+ <!-- pick a fieldType to analyze queries -->
1600
+ <str name="queryFieldType">string</str>
1601
+ <str name="config-file">elevate.xml</str>
1602
+ </searchComponent>
1603
+
1604
+ <!-- A request handler for demonstrating the elevator component -->
1605
+ <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
1606
+ <lst name="defaults">
1607
+ <str name="echoParams">explicit</str>
1608
+ </lst>
1609
+ <arr name="last-components">
1610
+ <str>elevator</str>
1611
+ </arr>
1612
+ </requestHandler>
1613
+
1614
+ <!-- Highlighting Component
1615
+
1616
+ http://wiki.apache.org/solr/HighlightingParameters
1617
+ -->
1618
+ <searchComponent class="solr.HighlightComponent" name="highlight">
1619
+ <highlighting>
1620
+ <!-- Configure the standard fragmenter -->
1621
+ <!-- This could most likely be commented out in the "default" case -->
1622
+ <fragmenter name="gap"
1623
+ default="true"
1624
+ class="solr.highlight.GapFragmenter">
1625
+ <lst name="defaults">
1626
+ <int name="hl.fragsize">100</int>
1627
+ </lst>
1628
+ </fragmenter>
1629
+
1630
+ <!-- A regular-expression-based fragmenter
1631
+ (for sentence extraction)
1632
+ -->
1633
+ <fragmenter name="regex"
1634
+ class="solr.highlight.RegexFragmenter">
1635
+ <lst name="defaults">
1636
+ <!-- slightly smaller fragsizes work better because of slop -->
1637
+ <int name="hl.fragsize">70</int>
1638
+ <!-- allow 50% slop on fragment sizes -->
1639
+ <float name="hl.regex.slop">0.5</float>
1640
+ <!-- a basic sentence pattern -->
1641
+ <str name="hl.regex.pattern">[-\w ,/\n\&quot;&apos;]{20,200}</str>
1642
+ </lst>
1643
+ </fragmenter>
1644
+
1645
+ <!-- Configure the standard formatter -->
1646
+ <formatter name="html"
1647
+ default="true"
1648
+ class="solr.highlight.HtmlFormatter">
1649
+ <lst name="defaults">
1650
+ <str name="hl.simple.pre"><![CDATA[<em>]]></str>
1651
+ <str name="hl.simple.post"><![CDATA[</em>]]></str>
1652
+ </lst>
1653
+ </formatter>
1654
+
1655
+ <!-- Configure the standard encoder -->
1656
+ <encoder name="html"
1657
+ class="solr.highlight.HtmlEncoder" />
1658
+
1659
+ <!-- Configure the standard fragListBuilder -->
1660
+ <fragListBuilder name="simple"
1661
+ default="true"
1662
+ class="solr.highlight.SimpleFragListBuilder"/>
1663
+
1664
+ <!-- Configure the single fragListBuilder -->
1665
+ <fragListBuilder name="single"
1666
+ class="solr.highlight.SingleFragListBuilder"/>
1667
+
1668
+ <!-- default tag FragmentsBuilder -->
1669
+ <fragmentsBuilder name="default"
1670
+ default="true"
1671
+ class="solr.highlight.ScoreOrderFragmentsBuilder">
1672
+ <!--
1673
+ <lst name="defaults">
1674
+ <str name="hl.multiValuedSeparatorChar">/</str>
1675
+ </lst>
1676
+ -->
1677
+ </fragmentsBuilder>
1678
+
1679
+ <!-- multi-colored tag FragmentsBuilder -->
1680
+ <fragmentsBuilder name="colored"
1681
+ class="solr.highlight.ScoreOrderFragmentsBuilder">
1682
+ <lst name="defaults">
1683
+ <str name="hl.tag.pre"><![CDATA[
1684
+ <b style="background:yellow">,<b style="background:lawgreen">,
1685
+ <b style="background:aquamarine">,<b style="background:magenta">,
1686
+ <b style="background:palegreen">,<b style="background:coral">,
1687
+ <b style="background:wheat">,<b style="background:khaki">,
1688
+ <b style="background:lime">,<b style="background:deepskyblue">]]></str>
1689
+ <str name="hl.tag.post"><![CDATA[</b>]]></str>
1690
+ </lst>
1691
+ </fragmentsBuilder>
1692
+
1693
+ <boundaryScanner name="default"
1694
+ default="true"
1695
+ class="solr.highlight.SimpleBoundaryScanner">
1696
+ <lst name="defaults">
1697
+ <str name="hl.bs.maxScan">10</str>
1698
+ <str name="hl.bs.chars">.,!? &#9;&#10;&#13;</str>
1699
+ </lst>
1700
+ </boundaryScanner>
1701
+
1702
+ <boundaryScanner name="breakIterator"
1703
+ class="solr.highlight.BreakIteratorBoundaryScanner">
1704
+ <lst name="defaults">
1705
+ <!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->
1706
+ <str name="hl.bs.type">WORD</str>
1707
+ <!-- language and country are used when constructing Locale object. -->
1708
+ <!-- And the Locale object will be used when getting instance of BreakIterator -->
1709
+ <str name="hl.bs.language">en</str>
1710
+ <str name="hl.bs.country">US</str>
1711
+ </lst>
1712
+ </boundaryScanner>
1713
+ </highlighting>
1714
+ </searchComponent>
1715
+
1716
+ <!-- Update Processors
1717
+
1718
+ Chains of Update Processor Factories for dealing with Update
1719
+ Requests can be declared, and then used by name in Update
1720
+ Request Processors
1721
+
1722
+ http://wiki.apache.org/solr/UpdateRequestProcessor
1723
+
1724
+ -->
1725
+ <!-- Deduplication
1726
+
1727
+ An example dedup update processor that creates the "id" field
1728
+ on the fly based on the hash code of some other fields. This
1729
+ example has overwriteDupes set to false since we are using the
1730
+ id field as the signatureField and Solr will maintain
1731
+ uniqueness based on that anyway.
1732
+
1733
+ -->
1734
+ <!--
1735
+ <updateRequestProcessorChain name="dedupe">
1736
+ <processor class="solr.processor.SignatureUpdateProcessorFactory">
1737
+ <bool name="enabled">true</bool>
1738
+ <str name="signatureField">id</str>
1739
+ <bool name="overwriteDupes">false</bool>
1740
+ <str name="fields">name,features,cat</str>
1741
+ <str name="signatureClass">solr.processor.Lookup3Signature</str>
1742
+ </processor>
1743
+ <processor class="solr.LogUpdateProcessorFactory" />
1744
+ <processor class="solr.RunUpdateProcessorFactory" />
1745
+ </updateRequestProcessorChain>
1746
+ -->
1747
+
1748
+ <!--
1749
+ This example update chain identifies the language of the incoming
1750
+ documents using the langid contrib. The detected language is
1751
+ written to field language_s. No field name mapping is done.
1752
+ The fields used for detection are text, title, subject and description,
1753
+ making this example suitable for detecting languages form full-text
1754
+ rich documents injected via ExtractingRequestHandler.
1755
+ See more about langId at http://wiki.apache.org/solr/LanguageDetection
1756
+ -->
1757
+ <!--
1758
+ <updateRequestProcessorChain name="langid">
1759
+ <processor class="org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory">
1760
+ <str name="langid.fl">text,title,subject,description</str>
1761
+ <str name="langid.langField">language_s</str>
1762
+ <str name="langid.fallback">en</str>
1763
+ </processor>
1764
+ <processor class="solr.LogUpdateProcessorFactory" />
1765
+ <processor class="solr.RunUpdateProcessorFactory" />
1766
+ </updateRequestProcessorChain>
1767
+ -->
1768
+
1769
+ <!-- Response Writers
1770
+
1771
+ http://wiki.apache.org/solr/QueryResponseWriter
1772
+
1773
+ Request responses will be written using the writer specified by
1774
+ the 'wt' request parameter matching the name of a registered
1775
+ writer.
1776
+
1777
+ The "default" writer is the default and will be used if 'wt' is
1778
+ not specified in the request.
1779
+ -->
1780
+ <!-- The following response writers are implicitly configured unless
1781
+ overridden...
1782
+ -->
1783
+ <!--
1784
+ <queryResponseWriter name="xml"
1785
+ default="true"
1786
+ class="solr.XMLResponseWriter" />
1787
+ <queryResponseWriter name="json" class="solr.JSONResponseWriter"/>
1788
+ <queryResponseWriter name="python" class="solr.PythonResponseWriter"/>
1789
+ <queryResponseWriter name="ruby" class="solr.RubyResponseWriter"/>
1790
+ <queryResponseWriter name="php" class="solr.PHPResponseWriter"/>
1791
+ <queryResponseWriter name="phps" class="solr.PHPSerializedResponseWriter"/>
1792
+ <queryResponseWriter name="csv" class="solr.CSVResponseWriter"/>
1793
+ -->
1794
+
1795
+ <queryResponseWriter name="json" class="solr.JSONResponseWriter">
1796
+ <!-- For the purposes of the tutorial, JSON responses are written as
1797
+ plain text so that they are easy to read in *any* browser.
1798
+ If you expect a MIME type of "application/json" just remove this override.
1799
+ -->
1800
+ <str name="content-type">text/plain; charset=UTF-8</str>
1801
+ </queryResponseWriter>
1802
+
1803
+ <!--
1804
+ Custom response writers can be declared as needed...
1805
+ -->
1806
+ <!-- The solr.velocity.enabled flag is used by Solr's test cases so that this response writer is not
1807
+ loaded (causing an error if contrib/velocity has not been built fully) -->
1808
+ <!-- <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" enable="${solr.velocity.enabled:true}"/> -->
1809
+ <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" enable="${solr.velocity.enabled:false}"/>
1810
+
1811
+
1812
+ <!-- XSLT response writer transforms the XML output by any xslt file found
1813
+ in Solr's conf/xslt directory. Changes to xslt files are checked for
1814
+ every xsltCacheLifetimeSeconds.
1815
+ -->
1816
+ <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
1817
+ <int name="xsltCacheLifetimeSeconds">5</int>
1818
+ </queryResponseWriter>
1819
+
1820
+ <!-- Query Parsers
1821
+
1822
+ http://wiki.apache.org/solr/SolrQuerySyntax
1823
+
1824
+ Multiple QParserPlugins can be registered by name, and then
1825
+ used in either the "defType" param for the QueryComponent (used
1826
+ by SearchHandler) or in LocalParams
1827
+ -->
1828
+ <!-- example of registering a query parser -->
1829
+ <!--
1830
+ <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
1831
+ -->
1832
+
1833
+ <!-- Function Parsers
1834
+
1835
+ http://wiki.apache.org/solr/FunctionQuery
1836
+
1837
+ Multiple ValueSourceParsers can be registered by name, and then
1838
+ used as function names when using the "func" QParser.
1839
+ -->
1840
+ <!-- example of registering a custom function parser -->
1841
+ <!--
1842
+ <valueSourceParser name="myfunc"
1843
+ class="com.mycompany.MyValueSourceParser" />
1844
+ -->
1845
+
1846
+ <!-- Legacy config for the admin interface -->
1847
+ <admin>
1848
+ <defaultQuery>*:*</defaultQuery>
1849
+
1850
+ <!-- configure a healthcheck file for servers behind a
1851
+ loadbalancer
1852
+ -->
1853
+ <!--
1854
+ <healthcheck type="file">server-enabled</healthcheck>
1855
+ -->
1856
+ </admin>
1857
+
1858
+ </config>