| <?xml version="1.0" ?> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <!-- This is a "kitchen sink" config file that tests can use. |
| When writting a new test, feel free to add *new* items (plugins, |
| config options, etc...) as long as they don't break any existing |
| tests. if you need to test something esoteric please add a new |
| "solrconfig-your-esoteric-purpose.xml" config file. |
| |
| Note in particular that this test is used by MinimalSchemaTest so |
| Anything added to this file needs to work correctly even if there |
| is now uniqueKey or defaultSearch Field. |
| --> |
| |
| <config> |
| |
| <jmx /> |
| |
| <!-- Used to specify an alternate directory to hold all index data. |
| It defaults to "index" if not present, and should probably |
| not be changed if replication is in use. --> |
| <dataDir>${solr.data.dir:}</dataDir> |
| |
| <!-- The DirectoryFactory to use for indexes. |
| solr.StandardDirectoryFactory, the default, is filesystem based. |
| solr.RAMDirectoryFactory is memory based and not persistent. --> |
| <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"> |
| <double name="maxWriteMBPerSecDefault">1000000</double> |
| <double name="maxWriteMBPerSecFlush">2000000</double> |
| <double name="maxWriteMBPerSecMerge">3000000</double> |
| <double name="maxWriteMBPerSecRead">4000000</double> |
| </directoryFactory> |
| <schemaFactory class="ClassicIndexSchemaFactory"/> |
| |
| <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion> |
| |
| <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> |
| |
| <updateHandler class="solr.DirectUpdateHandler2"> |
| |
| <!-- autocommit pending docs if certain criteria are met |
| <autoCommit> |
| <maxDocs>10000</maxDocs> |
| <maxTime>3600000</maxTime> |
| </autoCommit> |
| --> |
| |
| <updateLog enable="${enable.update.log:true}"> |
| <str name="dir">${solr.ulog.dir:}</str> |
| </updateLog> |
| |
| <commitWithin> |
| <softCommit>${solr.commitwithin.softcommit:true}</softCommit> |
| </commitWithin> |
| |
| </updateHandler> |
| |
| <query> |
| <!-- Maximum number of clauses in a boolean query... can affect |
| range or wildcard queries that expand to big boolean |
| queries. An exception is thrown if exceeded. |
| --> |
| <maxBooleanClauses>${solr.max.booleanClauses:1024}</maxBooleanClauses> |
| |
| <!-- Cache specification for Filters or DocSets - unordered set of *all* documents |
| that match a particular query. |
| --> |
| <filterCache |
| size="512" |
| initialSize="512" |
| autowarmCount="2"/> |
| |
| <queryResultCache |
| size="512" |
| initialSize="512" |
| autowarmCount="2"/> |
| |
| <documentCache |
| size="512" |
| initialSize="512" |
| autowarmCount="0"/> |
| |
| <cache name="perSegFilter" |
| size="10" |
| initialSize="0" |
| autowarmCount="10" /> |
| |
| <!-- If true, stored fields that are not requested will be loaded lazily. |
| --> |
| <enableLazyFieldLoading>true</enableLazyFieldLoading> |
| |
| <!-- |
| |
| <cache name="myUserCache" |
| size="4096" |
| initialSize="1024" |
| autowarmCount="1024" |
| regenerator="MyRegenerator" |
| /> |
| --> |
| |
| <!-- |
| <useFilterForSortedQuery>true</useFilterForSortedQuery> |
| --> |
| |
| <queryResultWindowSize>10</queryResultWindowSize> |
| |
| <!-- boolToFilterOptimizer converts boolean clauses with zero boost |
| into cached filters if the number of docs selected by the clause exceeds |
| the threshold (represented as a fraction of the total index) |
| --> |
| <boolTofilterOptimizer enabled="false" cacheSize="32" threshold=".05"/> |
| |
| <!-- a newSearcher event is fired whenever a new searcher is being prepared |
| and there is a current searcher handling requests (aka registered). --> |
| <!-- QuerySenderListener takes an array of NamedList and executes a |
| local query request for each NamedList in sequence. --> |
| <!-- |
| <listener event="newSearcher" class="solr.QuerySenderListener"> |
| <arr name="queries"> |
| <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst> |
| <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst> |
| </arr> |
| </listener> |
| --> |
| |
| <!-- a firstSearcher event is fired whenever a new searcher is being |
| prepared but there is no current registered searcher to handle |
| requests or to gain prewarming data from. --> |
| <!-- |
| <listener event="firstSearcher" class="solr.QuerySenderListener"> |
| <arr name="queries"> |
| <lst> <str name="q">fast_warm</str> <str name="start">0</str> <str name="rows">10</str> </lst> |
| </arr> |
| </listener> |
| --> |
| |
| </query> |
| |
| <queryResponseWriter name="xml" default="true" |
| class="solr.XMLResponseWriter" /> |
| |
| <!-- An alternate set representation that uses an integer hash to store filters (sets of docids). |
| If the set cardinality <= maxSize elements, then HashDocSet will be used instead of the bitset |
| based HashBitset. --> |
| |
| <!-- requestHandler plugins... incoming queries will be dispatched to the |
| correct handler based on the 'qt' param matching the |
| name of registered handlers. |
| The "standard" request handler is the default and will be used if qt |
| is not specified in the request. |
| --> |
| <requestHandler name="/select" class="solr.SearchHandler"> |
| <bool name="httpCaching">true</bool> |
| </requestHandler> |
| |
| |
| <requestHandler name="/dismax" class="solr.SearchHandler" > |
| <lst name="defaults"> |
| <str name="defType">dismax</str> |
| <str name="q.alt">*:*</str> |
| <float name="tie">0.01</float> |
| <str name="qf"> |
| text^0.5 features_t^1.0 subject^1.4 title_stemmed^2.0 |
| </str> |
| <str name="pf"> |
| text^0.2 features_t^1.1 subject^1.4 title_stemmed^2.0 title^1.5 |
| </str> |
| <str name="bf"> |
| ord(weight)^0.5 recip(rord(iind),1,1000,1000)^0.3 |
| </str> |
| <str name="mm"> |
| 3<-1 5<-2 6<90% |
| </str> |
| <int name="ps">100</int> |
| </lst> |
| </requestHandler> |
| |
| <requestHandler name="/mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/> |
| |
| <!-- test query parameter defaults --> |
| <requestHandler name="/defaults" class="solr.SearchHandler"> |
| <lst name="defaults"> |
| <int name="rows">4</int> |
| <bool name="hl">true</bool> |
| <str name="hl.fl">text,name,subject,title,whitetok</str> |
| </lst> |
| </requestHandler> |
| |
| <!-- test query parameter defaults --> |
| <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy"> |
| <lst name="defaults"> |
| <int name="rows">4</int> |
| <bool name="hl">true</bool> |
| <str name="hl.fl">text,name,subject,title,whitetok</str> |
| </lst> |
| </requestHandler> |
| |
| <searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent"> |
| <!-- This is slightly different from the field value so we can test dealing with token offset changes --> |
| <str name="queryAnalyzerFieldType">lowerpunctfilt</str> |
| |
| <lst name="spellchecker"> |
| <str name="name">default</str> |
| <str name="field">lowerfilt</str> |
| <str name="spellcheckIndexDir">spellchecker1</str> |
| <str name="buildOnCommit">false</str> |
| </lst> |
| <lst name="spellchecker"> |
| <str name="name">direct</str> |
| <str name="classname">DirectSolrSpellChecker</str> |
| <str name="field">lowerfilt</str> |
| <int name="minQueryLength">3</int> |
| </lst> |
| <lst name="spellchecker"> |
| <str name="name">wordbreak</str> |
| <str name="classname">solr.WordBreakSolrSpellChecker</str> |
| <str name="field">lowerfilt</str> |
| <str name="combineWords">true</str> |
| <str name="breakWords">true</str> |
| <int name="maxChanges">10</int> |
| </lst> |
| <lst name="spellchecker"> |
| <str name="name">multipleFields</str> |
| <str name="field">lowerfilt1and2</str> |
| <str name="spellcheckIndexDir">spellcheckerMultipleFields</str> |
| <str name="buildOnCommit">false</str> |
| </lst> |
| <!-- Example of using different distance measure --> |
| <lst name="spellchecker"> |
| <str name="name">jarowinkler</str> |
| <str name="field">lowerfilt</str> |
| <!-- Use a different Distance Measure --> |
| <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str> |
| <str name="spellcheckIndexDir">spellchecker2</str> |
| |
| </lst> |
| <lst name="spellchecker"> |
| <str name="classname">solr.FileBasedSpellChecker</str> |
| <str name="name">external</str> |
| <str name="sourceLocation">spellings.txt</str> |
| <str name="characterEncoding">UTF-8</str> |
| <str name="spellcheckIndexDir">spellchecker3</str> |
| </lst> |
| <!-- Comparator --> |
| <lst name="spellchecker"> |
| <str name="name">freq</str> |
| <str name="field">lowerfilt</str> |
| <str name="spellcheckIndexDir">spellcheckerFreq</str> |
| <!-- comparatorClass be one of: |
| 1. score (default) |
| 2. freq (Frequency first, then score) |
| 3. A fully qualified class name |
| --> |
| <str name="comparatorClass">freq</str> |
| <str name="buildOnCommit">false</str> |
| </lst> |
| <lst name="spellchecker"> |
| <str name="name">fqcn</str> |
| <str name="field">lowerfilt</str> |
| <str name="spellcheckIndexDir">spellcheckerFQCN</str> |
| <str name="comparatorClass">org.apache.solr.spelling.SampleComparator</str> |
| <str name="buildOnCommit">false</str> |
| </lst> |
| <lst name="spellchecker"> |
| <str name="name">perDict</str> |
| <str name="classname">org.apache.solr.handler.component.DummyCustomParamSpellChecker</str> |
| <str name="field">lowerfilt</str> |
| </lst> |
| </searchComponent> |
| |
| <searchComponent name="termsComp" class="org.apache.solr.handler.component.TermsComponent"/> |
| |
| <requestHandler name="/terms" class="org.apache.solr.handler.component.SearchHandler"> |
| <arr name="components"> |
| <str>termsComp</str> |
| </arr> |
| </requestHandler> |
| <!-- |
| The SpellingQueryConverter to convert raw (CommonParams.Q) queries into tokens. Uses a simple regular expression |
| to strip off field markup, boosts, ranges, etc. but it is not guaranteed to match an exact parse from the query parser. |
| --> |
| <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/> |
| |
| <requestHandler name="/spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler"> |
| <lst name="defaults"> |
| <!-- omp = Only More Popular --> |
| <str name="spellcheck.onlyMorePopular">false</str> |
| <!-- exr = Extended Results --> |
| <str name="spellcheck.extendedResults">false</str> |
| <!-- The number of suggestions to return --> |
| <str name="spellcheck.count">1</str> |
| </lst> |
| <arr name="last-components"> |
| <str>spellcheck</str> |
| </arr> |
| </requestHandler> |
| <requestHandler name="/spellCheckCompRH_Direct" class="org.apache.solr.handler.component.SearchHandler"> |
| <lst name="defaults"> |
| <str name="spellcheck.dictionary">direct</str> |
| <str name="spellcheck.onlyMorePopular">false</str> |
| <str name="spellcheck.extendedResults">false</str> |
| <str name="spellcheck.count">1</str> |
| </lst> |
| <arr name="last-components"> |
| <str>spellcheck</str> |
| </arr> |
| </requestHandler> |
| <requestHandler name="/spellCheckWithWordbreak" class="org.apache.solr.handler.component.SearchHandler"> |
| <lst name="defaults"> |
| <str name="spellcheck.dictionary">default</str> |
| <str name="spellcheck.dictionary">wordbreak</str> |
| <str name="spellcheck.count">20</str> |
| </lst> |
| <arr name="last-components"> |
| <str>spellcheck</str> |
| </arr> |
| </requestHandler> |
| <requestHandler name="/spellCheckWithWordbreak_Direct" class="org.apache.solr.handler.component.SearchHandler"> |
| <lst name="defaults"> |
| <str name="spellcheck.dictionary">direct</str> |
| <str name="spellcheck.dictionary">wordbreak</str> |
| <str name="spellcheck.count">20</str> |
| </lst> |
| <arr name="last-components"> |
| <str>spellcheck</str> |
| </arr> |
| </requestHandler> |
| <requestHandler name="/spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler"> |
| <lst name="defaults"> |
| <str name="defType">dismax</str> |
| <str name="qf">lowerfilt1^1</str> |
| </lst> |
| <arr name="last-components"> |
| <str>spellcheck</str> |
| </arr> |
| </requestHandler> |
| |
| <requestHandler name="/mltrh" class="org.apache.solr.handler.component.SearchHandler"> |
| |
| </requestHandler> |
| |
| <searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/> |
| |
| <requestHandler name="/tvrh" class="org.apache.solr.handler.component.SearchHandler"> |
| <lst name="defaults"> |
| |
| </lst> |
| <arr name="last-components"> |
| <str>tvComponent</str> |
| </arr> |
| </requestHandler> |
| |
| <!-- test elevation --> |
| <searchComponent name="elevate" class="org.apache.solr.handler.component.QueryElevationComponent" > |
| <str name="queryFieldType">string</str> |
| <str name="config-file">elevate.xml</str> |
| </searchComponent> |
| |
| |
| <requestHandler name="/elevate" class="org.apache.solr.handler.component.SearchHandler"> |
| <lst name="defaults"> |
| <str name="echoParams">explicit</str> |
| </lst> |
| <arr name="last-components"> |
| <str>elevate</str> |
| </arr> |
| </requestHandler> |
| |
| <requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> |
| </requestHandler> |
| |
| |
| <searchComponent class="solr.HighlightComponent" name="highlight"> |
| <highlighting> |
| <!-- Configure the standard fragmenter --> |
| <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true"> |
| <lst name="defaults"> |
| <int name="hl.fragsize">100</int> |
| </lst> |
| </fragmenter> |
| |
| <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter"> |
| <lst name="defaults"> |
| <int name="hl.fragsize">70</int> |
| </lst> |
| </fragmenter> |
| |
| <!-- Configure the standard formatter --> |
| <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true"> |
| <lst name="defaults"> |
| <str name="hl.simple.pre"><![CDATA[<em>]]></str> |
| <str name="hl.simple.post"><![CDATA[</em>]]></str> |
| </lst> |
| </formatter> |
| |
| <!-- Configure the standard fragListBuilder --> |
| <fragListBuilder name="simple" class="org.apache.solr.highlight.SimpleFragListBuilder" default="true"/> |
| |
| <!-- Configure the standard fragmentsBuilder --> |
| <fragmentsBuilder name="simple" class="org.apache.solr.highlight.SimpleFragmentsBuilder" default="true"/> |
| <fragmentsBuilder name="scoreOrder" class="org.apache.solr.highlight.ScoreOrderFragmentsBuilder"/> |
| |
| <boundaryScanner name="simple" class="solr.highlight.SimpleBoundaryScanner" default="true"> |
| <lst name="defaults"> |
| <str name="hl.bs.maxScan">10</str> |
| <str name="hl.bs.chars">.,!? 	 </str> |
| </lst> |
| </boundaryScanner> |
| |
| <boundaryScanner name="breakIterator" class="solr.highlight.BreakIteratorBoundaryScanner"> |
| <lst name="defaults"> |
| <str name="hl.bs.type">WORD</str> |
| <str name="hl.bs.language">en</str> |
| <str name="hl.bs.country">US</str> |
| </lst> |
| </boundaryScanner> |
| </highlighting> |
| </searchComponent> |
| |
| <requestDispatcher> |
| <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" /> |
| <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false"> |
| <cacheControl>max-age=30, public</cacheControl> |
| </httpCaching> |
| </requestDispatcher> |
| <admin> |
| <defaultQuery>solr</defaultQuery> |
| <gettableFiles>solrconfig.xml schema.xml</gettableFiles> |
| </admin> |
| |
| <!-- test getting system property --> |
| <propTest attr1="${solr.test.sys.prop1}-$${literal}" |
| attr2="${non.existent.sys.prop:default-from-config}">prefix-${solr.test.sys.prop2}-suffix</propTest> |
| |
| <queryParser name="rank" class="org.apache.solr.search.RankQueryTestPlugin"/> |
| |
| <updateRequestProcessorChain name="uniq-fields"> |
| <processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory"> |
| <arr name="fieldName"> |
| <str>uniq</str> |
| <str>uniq2</str> |
| <str>uniq3</str> |
| </arr> |
| </processor> |
| <processor class="solr.RunUpdateProcessorFactory" /> |
| </updateRequestProcessorChain> |
| |
| <updateRequestProcessorChain name="distrib-dup-test-chain-explicit"> |
| <!-- explicit test using processors before and after distrib --> |
| <processor class="solr.RegexReplaceProcessorFactory"> |
| <str name="fieldName">regex_dup_A_s</str> |
| <str name="pattern">x</str> |
| <str name="replacement">x_x</str> |
| </processor> |
| <processor class="solr.DistributedUpdateProcessorFactory" /> |
| <processor class="solr.RegexReplaceProcessorFactory"> |
| <str name="fieldName">regex_dup_B_s</str> |
| <str name="pattern">x</str> |
| <str name="replacement">x_x</str> |
| </processor> |
| <processor class="solr.RunUpdateProcessorFactory" /> |
| </updateRequestProcessorChain> |
| |
| <updateRequestProcessorChain name="distrib-dup-test-chain-implicit"> |
| <!-- implicit test w/o distrib declared--> |
| <processor class="solr.RegexReplaceProcessorFactory"> |
| <str name="fieldName">regex_dup_A_s</str> |
| <str name="pattern">x</str> |
| <str name="replacement">x_x</str> |
| </processor> |
| <processor class="solr.RegexReplaceProcessorFactory"> |
| <str name="fieldName">regex_dup_B_s</str> |
| <str name="pattern">x</str> |
| <str name="replacement">x_x</str> |
| </processor> |
| <processor class="solr.RunUpdateProcessorFactory" /> |
| </updateRequestProcessorChain> |
| |
| <initParams path="/select,/dismax,/defaults,/lazy,/spellCheckCompRH,/spellCheckWithWordbreak,/spellCheckCompRH_Direct,/spellCheckCompRH1,/mltrh,/tvrh,/terms"> |
| <lst name="defaults"> |
| <str name="df">text</str> |
| </lst> |
| </initParams> |
| |
| </config> |