4
Licensed to the Apache Software Foundation (ASF) under one or more
5
contributor license agreements. See the NOTICE file distributed with
6
this work for additional information regarding copyright ownership.
7
The ASF licenses this file to You under the Apache License, Version 2.0
8
(the "License"); you may not use this file except in compliance with
9
the License. You may obtain a copy of the License at
11
http://www.apache.org/licenses/LICENSE-2.0
13
Unless required by applicable law or agreed to in writing, software
14
distributed under the License is distributed on an "AS IS" BASIS,
15
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
See the License for the specific language governing permissions and
17
limitations under the License.
20
<!-- $Id: solrconfig.xml 382610 2006-03-03 01:43:03Z yonik $
26
This is a "kitchen sink" config file that tests can use.
27
When writting a new test, feel free to add *new* items (plugins,
28
config options, etc...) as long as they don't break any existing
29
tests. if you need to test something esoteric please add a new
30
"solrconfig-your-esoteric-purpose.xml" config file.
32
Note in particular that this test is used by MinimalSchemaTest so
33
Anything added to this file needs to work correctly even if there
34
is now uniqueKey or defaultSearch Field.
43
<!-- Used to specify an alternate directory to hold all index data.
44
It defaults to "index" if not present, and should probably
45
not be changed if replication is in use. -->
46
<dataDir>${solr.data.dir:}</dataDir>
48
<!-- The DirectoryFactory to use for indexes.
49
solr.StandardDirectoryFactory, the default, is filesystem based.
50
solr.RAMDirectoryFactory is memory based and not persistent. -->
51
<directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
53
<luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
56
<!-- Values here affect all index writers and act as a default
57
unless overridden. -->
58
<!-- Values here affect all index writers and act as a default unless overridden. -->
59
<useCompoundFile>false</useCompoundFile>
60
<mergeFactor>10</mergeFactor>
61
<!-- If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first.
63
<!--<maxBufferedDocs>1000</maxBufferedDocs>-->
64
<!-- Tell Lucene when to flush documents to disk.
65
Giving Lucene more memory for indexing means faster indexing at the cost of more RAM
67
If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first.
70
<ramBufferSizeMB>32</ramBufferSizeMB>
71
<maxMergeDocs>2147483647</maxMergeDocs>
72
<maxFieldLength>10000</maxFieldLength>
73
<writeLockTimeout>1000</writeLockTimeout>
77
The Merge Policy in Lucene controls how merging is handled by Lucene. The default in 2.3 is the LogByteSizeMergePolicy, previous
78
versions used LogDocMergePolicy.
80
LogByteSizeMergePolicy chooses segments to merge based on their size. The Lucene 2.2 default, LogDocMergePolicy chose when
81
to merge based on number of documents
83
Other implementations of MergePolicy must have a no-argument constructor
85
<mergePolicy class="org.apache.lucene.index.LogByteSizeMergePolicy"/>
89
The Merge Scheduler in Lucene controls how merges are performed. The ConcurrentMergeScheduler (Lucene 2.3 default)
90
can perform merges in the background using separate threads. The SerialMergeScheduler (Lucene 2.2 default) does not.
92
<mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>
93
<!-- these are global... can't currently override per index -->
94
<writeLockTimeout>1000</writeLockTimeout>
96
<lockType>single</lockType>
100
<!-- lucene options specific to the main on-disk lucene index -->
101
<useCompoundFile>false</useCompoundFile>
102
<mergeFactor>8</mergeFactor>
103
<!-- for better multi-segment testing, we are using slower
104
indexing properties of maxBufferedDocs=10 and LogDocMergePolicy.
106
<maxBufferedDocs>10</maxBufferedDocs>
107
<maxMergeDocs>2147483647</maxMergeDocs>
108
<maxFieldLength>10000</maxFieldLength>
109
<mergePolicy class="org.apache.lucene.index.LogDocMergePolicy"/>
111
<unlockOnStartup>true</unlockOnStartup>
114
<updateHandler class="solr.DirectUpdateHandler2">
116
<!-- autocommit pending docs if certain criteria are met
118
<maxDocs>10000</maxDocs>
119
<maxTime>3600000</maxTime>
122
<!-- represents a lower bound on the frequency that commits may
123
occur (in seconds). NOTE: not yet implemented
125
<commitIntervalLowerBound>0</commitIntervalLowerBound>
128
<!-- The RunExecutableListener executes an external command.
129
exe - the name of the executable to run
130
dir - dir to use as the current working directory. default="."
131
wait - the calling thread waits until the executable returns. default="true"
132
args - the arguments to pass to the program. default=nothing
133
env - environment variables to set. default=nothing
135
<!-- A postCommit event is fired after every commit
136
<listener event="postCommit" class="solr.RunExecutableListener">
137
<str name="exe">/var/opt/resin3/__PORT__/scripts/solr/snapshooter</str>
138
<str name="dir">/var/opt/resin3/__PORT__</str>
139
<bool name="wait">true</bool>
140
<arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
141
<arr name="env"> <str>MYVAR=val1</str> </arr>
150
<!-- Maximum number of clauses in a boolean query... can affect
151
range or wildcard queries that expand to big boolean
152
queries. An exception is thrown if exceeded.
154
<maxBooleanClauses>1024</maxBooleanClauses>
157
<!-- Cache specification for Filters or DocSets - unordered set of *all* documents
158
that match a particular query.
161
class="solr.search.FastLRUCache"
167
class="solr.search.LRUCache"
173
class="solr.search.LRUCache"
178
<!-- If true, stored fields that are not requested will be loaded lazily.
180
<enableLazyFieldLoading>true</enableLazyFieldLoading>
184
<cache name="myUserCache"
185
class="solr.search.LRUCache"
189
regenerator="MyRegenerator"
195
<useFilterForSortedQuery>true</useFilterForSortedQuery>
198
<queryResultWindowSize>10</queryResultWindowSize>
200
<!-- set maxSize artificially low to exercise both types of sets -->
201
<HashDocSet maxSize="3" loadFactor="0.75"/>
204
<!-- boolToFilterOptimizer converts boolean clauses with zero boost
205
into cached filters if the number of docs selected by the clause exceeds
206
the threshold (represented as a fraction of the total index)
208
<boolTofilterOptimizer enabled="false" cacheSize="32" threshold=".05"/>
211
<!-- a newSearcher event is fired whenever a new searcher is being prepared
212
and there is a current searcher handling requests (aka registered). -->
213
<!-- QuerySenderListener takes an array of NamedList and executes a
214
local query request for each NamedList in sequence. -->
216
<listener event="newSearcher" class="solr.QuerySenderListener">
218
<lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>
219
<lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>
224
<!-- a firstSearcher event is fired whenever a new searcher is being
225
prepared but there is no current registered searcher to handle
226
requests or to gain prewarming data from. -->
228
<listener event="firstSearcher" class="solr.QuerySenderListener">
230
<lst> <str name="q">fast_warm</str> <str name="start">0</str> <str name="rows">10</str> </lst>
239
<!-- An alternate set representation that uses an integer hash to store filters (sets of docids).
240
If the set cardinality <= maxSize elements, then HashDocSet will be used instead of the bitset
241
based HashBitset. -->
243
<!-- requestHandler plugins... incoming queries will be dispatched to the
244
correct handler based on the qt (query type) param matching the
245
name of registered handlers.
246
The "standard" request handler is the default and will be used if qt
247
is not specified in the request.
249
<requestHandler name="standard" class="solr.StandardRequestHandler">
250
<bool name="httpCaching">true</bool>
252
<requestHandler name="dismaxOldStyleDefaults"
253
class="solr.DisMaxRequestHandler" >
254
<!-- for historic reasons, DisMaxRequestHandler will use all of
255
it's init params as "defaults" if there is no "defaults" list
258
<str name="q.alt">*:*</str>
259
<float name="tie">0.01</float>
261
text^0.5 features_t^1.0 subject^1.4 title_stemmed^2.0
264
text^0.2 features_t^1.1 subject^1.4 title_stemmed^2.0 title^1.5
267
ord(weight)^0.5 recip(rord(iind),1,1000,1000)^0.3
270
3<-1 5<-2 6<90%
272
<int name="ps">100</int>
274
<requestHandler name="dismax" class="solr.DisMaxRequestHandler" >
275
<lst name="defaults">
276
<str name="q.alt">*:*</str>
277
<float name="tie">0.01</float>
279
text^0.5 features_t^1.0 subject^1.4 title_stemmed^2.0
282
text^0.2 features_t^1.1 subject^1.4 title_stemmed^2.0 title^1.5
285
ord(weight)^0.5 recip(rord(iind),1,1000,1000)^0.3
288
3<-1 5<-2 6<90%
290
<int name="ps">100</int>
293
<requestHandler name="dismaxNoDefaults" class="solr.DisMaxRequestHandler" >
295
<requestHandler name="old" class="solr.tst.OldRequestHandler" >
296
<int name="myparam">1000</int>
297
<float name="ratio">1.4142135</float>
298
<arr name="myarr"><int>1</int><int>2</int></arr>
301
<requestHandler name="oldagain" class="solr.tst.OldRequestHandler" >
302
<lst name="lst1"> <str name="op">sqrt</str> <int name="val">2</int> </lst>
303
<lst name="lst2"> <str name="op">log</str> <float name="val">10</float> </lst>
305
<requestHandler name="mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/>
307
<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
309
<requestHandler name="test" class="solr.tst.TestRequestHandler" />
311
<!-- test query parameter defaults -->
312
<requestHandler name="defaults" class="solr.StandardRequestHandler">
313
<lst name="defaults">
314
<int name="rows">4</int>
315
<bool name="hl">true</bool>
316
<str name="hl.fl">text,name,subject,title,whitetok</str>
320
<!-- test query parameter defaults -->
321
<requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
322
<lst name="defaults">
323
<int name="rows">4</int>
324
<bool name="hl">true</bool>
325
<str name="hl.fl">text,name,subject,title,whitetok</str>
329
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
330
<requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy">
331
<bool name="httpCaching">false</bool>
333
<requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler" />
336
<searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent">
337
<!-- This is slightly different from the field value so we can test dealing with token offset changes -->
338
<str name="queryAnalyzerFieldType">lowerpunctfilt</str>
340
<lst name="spellchecker">
341
<str name="name">default</str>
342
<str name="field">lowerfilt</str>
343
<str name="spellcheckIndexDir">spellchecker1</str>
344
<str name="buildOnCommit">true</str>
346
<lst name="spellchecker">
347
<str name="name">multipleFields</str>
348
<str name="field">lowerfilt1and2</str>
349
<str name="spellcheckIndexDir">spellcheckerMultipleFields</str>
350
<str name="buildOnCommit">true</str>
352
<!-- Example of using different distance measure -->
353
<lst name="spellchecker">
354
<str name="name">jarowinkler</str>
355
<str name="field">lowerfilt</str>
356
<!-- Use a different Distance Measure -->
357
<str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
358
<str name="spellcheckIndexDir">spellchecker2</str>
361
<lst name="spellchecker">
362
<str name="classname">solr.FileBasedSpellChecker</str>
363
<str name="name">external</str>
364
<str name="sourceLocation">spellings.txt</str>
365
<str name="characterEncoding">UTF-8</str>
366
<str name="spellcheckIndexDir">spellchecker3</str>
369
<lst name="spellchecker">
370
<str name="name">freq</str>
371
<str name="field">lowerfilt</str>
372
<str name="spellcheckIndexDir">spellcheckerFreq</str>
373
<!-- comparatorClass be one of:
375
2. freq (Frequency first, then score)
376
3. A fully qualified class name
378
<str name="comparatorClass">freq</str>
379
<str name="buildOnCommit">true</str>
381
<lst name="spellchecker">
382
<str name="name">fqcn</str>
383
<str name="field">lowerfilt</str>
384
<str name="spellcheckIndexDir">spellcheckerFQCN</str>
385
<str name="comparatorClass">org.apache.solr.spelling.SampleComparator</str>
386
<str name="buildOnCommit">true</str>
388
<lst name="spellchecker">
389
<str name="name">perDict</str>
390
<str name="classname">org.apache.solr.handler.component.DummyCustomParamSpellChecker</str>
391
<str name="field">lowerfilt</str>
395
<searchComponent name="termsComp" class="org.apache.solr.handler.component.TermsComponent"/>
397
<requestHandler name="/terms" class="org.apache.solr.handler.component.SearchHandler">
398
<arr name="components">
403
The SpellingQueryConverter to convert raw (CommonParams.Q) queries into tokens. Uses a simple regular expression
404
to strip off field markup, boosts, ranges, etc. but it is not guaranteed to match an exact parse from the query parser.
406
<queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/>
408
<requestHandler name="spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
409
<lst name="defaults">
410
<!-- omp = Only More Popular -->
411
<str name="spellcheck.onlyMorePopular">false</str>
412
<!-- exr = Extended Results -->
413
<str name="spellcheck.extendedResults">false</str>
414
<!-- The number of suggestions to return -->
415
<str name="spellcheck.count">1</str>
417
<arr name="last-components">
418
<str>spellcheck</str>
421
<requestHandler name="spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler">
422
<lst name="defaults">
423
<str name="defType">dismax</str>
424
<str name="qf">lowerfilt1^1</str>
426
<arr name="last-components">
427
<str>spellcheck</str>
432
<searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
434
<requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
435
<lst name="defaults">
438
<arr name="last-components">
439
<str>tvComponent</str>
442
<searchComponent class="solr.HighlightComponent" name="highlight">
444
<!-- Configure the standard fragmenter -->
445
<fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true">
446
<lst name="defaults">
447
<int name="hl.fragsize">100</int>
451
<fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter">
452
<lst name="defaults">
453
<int name="hl.fragsize">70</int>
457
<!-- Configure the standard formatter -->
458
<formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true">
459
<lst name="defaults">
460
<str name="hl.simple.pre"><![CDATA[<em>]]></str>
461
<str name="hl.simple.post"><![CDATA[</em>]]></str>
465
<!-- Configure the standard fragListBuilder -->
466
<fragListBuilder name="simple" class="org.apache.solr.highlight.SimpleFragListBuilder" default="true"/>
468
<!-- Configure the standard fragmentsBuilder -->
469
<fragmentsBuilder name="simple" class="org.apache.solr.highlight.SimpleFragmentsBuilder" default="true"/>
470
<fragmentsBuilder name="scoreOrder" class="org.apache.solr.highlight.ScoreOrderFragmentsBuilder"/>
472
<boundaryScanner name="simple" class="solr.highlight.SimpleBoundaryScanner" default="true">
473
<lst name="defaults">
474
<str name="hl.bs.maxScan">10</str>
475
<str name="hl.bs.chars">.,!? 	 </str>
479
<boundaryScanner name="breakIterator" class="solr.highlight.BreakIteratorBoundaryScanner">
480
<lst name="defaults">
481
<str name="hl.bs.type">WORD</str>
482
<str name="hl.bs.language">en</str>
483
<str name="hl.bs.country">US</str>
490
<!-- enable streaming for testing... -->
491
<requestDispatcher handleSelect="true" >
492
<requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048" />
493
<httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
494
<cacheControl>max-age=30, public</cacheControl>
499
<defaultQuery>solr</defaultQuery>
500
<gettableFiles>solrconfig.xml scheam.xml admin-extra.html</gettableFiles>
503
<!-- test getting system property -->
504
<propTest attr1="${solr.test.sys.prop1}-$${literal}"
505
attr2="${non.existent.sys.prop:default-from-config}">prefix-${solr.test.sys.prop2}-suffix</propTest>
507
<queryParser name="foo" class="FooQParserPlugin"/>
509
<updateRequestProcessorChain name="dedupe">
510
<processor class="org.apache.solr.update.processor.SignatureUpdateProcessorFactory">
511
<bool name="enabled">false</bool>
512
<bool name="overwriteDupes">true</bool>
513
<str name="fields">v_t,t_field</str>
514
<str name="signatureClass">org.apache.solr.update.processor.TextProfileSignature</str>
516
<processor class="solr.RunUpdateProcessorFactory" />
517
</updateRequestProcessorChain>
518
<updateRequestProcessorChain name="stored_sig">
519
<!-- this chain is valid even though the signature field is not
520
indexed, because we are not asking for dups to be overwritten
522
<processor class="org.apache.solr.update.processor.SignatureUpdateProcessorFactory">
523
<bool name="enabled">true</bool>
524
<str name="signatureField">non_indexed_signature_sS</str>
525
<bool name="overwriteDupes">false</bool>
526
<str name="fields">v_t,t_field</str>
527
<str name="signatureClass">org.apache.solr.update.processor.TextProfileSignature</str>
529
<processor class="solr.RunUpdateProcessorFactory" />
530
</updateRequestProcessorChain>
531
<updateRequestProcessorChain name="uniq-fields">
532
<processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory">
539
<processor class="solr.RunUpdateProcessorFactory" />
540
</updateRequestProcessorChain>