| <?xml version="1.0" encoding="UTF-8" ?> |
| <!-- |
| 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. |
| --> |
| <config> |
| <luceneMatchVersion>7.6.0</luceneMatchVersion> |
| |
| <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" /> |
| |
| <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" /> |
| <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" /> |
| |
| <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" /> |
| <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" /> |
| |
| <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" /> |
| <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" /> |
| |
| <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" /> |
| <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" /> |
| |
| <dataDir>${solr.data.dir:}</dataDir> |
| |
| <directoryFactory name="DirectoryFactory" |
| class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"> |
| <str name="solr.hdfs.home">${solr.hdfs.home:}</str> |
| <str name="solr.hdfs.confdir">${solr.hdfs.confdir:}</str> |
| <str name="solr.hdfs.blockcache.enabled">${solr.hdfs.blockcache.enabled:true}</str> |
| <str name="solr.hdfs.blockcache.global">${solr.hdfs.blockcache.global:true}</str> |
| </directoryFactory> |
| |
| <codecFactory class="solr.SchemaCodecFactory"/> |
| |
| <schemaFactory class="ManagedIndexSchemaFactory"> |
| <bool name="mutable">true</bool> |
| <str name="managedSchemaResourceName">managed-schema</str> |
| </schemaFactory> |
| |
| <indexConfig> |
| <writeLockTimeout>10000</writeLockTimeout> |
| <maxIndexingThreads>50</maxIndexingThreads> |
| <mergePolicyFactory class="org.apache.solr.index.TieredMergePolicyFactory"> |
| <int name="maxMergeAtOnce">5</int> |
| <int name="segmentsPerTier">5</int> |
| </mergePolicyFactory> |
| <lockType>${solr.lock.type:native}</lockType> |
| <infoStream>true</infoStream> |
| </indexConfig> |
| <jmx /> |
| |
| <updateHandler class="solr.DirectUpdateHandler2"> |
| <updateLog> |
| <str name="dir">${solr.ulog.dir:}</str> |
| </updateLog> |
| <autoCommit> |
| <maxTime>${solr.autoCommit.maxTime:15000}</maxTime> |
| <openSearcher>false</openSearcher> |
| </autoCommit> |
| <autoSoftCommit> |
| <maxTime>${solr.autoSoftCommit.maxTime:5000}</maxTime> |
| </autoSoftCommit> |
| </updateHandler> |
| <query> |
| <maxBooleanClauses>1024</maxBooleanClauses> |
| <filterCache class="solr.FastLRUCache" |
| size="512" |
| initialSize="512" |
| autowarmCount="0"/> |
| <queryResultCache class="solr.LRUCache" |
| size="512" |
| initialSize="512" |
| autowarmCount="0"/> |
| <documentCache class="solr.LRUCache" |
| size="512" |
| initialSize="512" |
| autowarmCount="0"/> |
| <cache name="perSegFilter" |
| class="solr.search.LRUCache" |
| size="10" |
| initialSize="0" |
| autowarmCount="10" |
| regenerator="solr.NoOpRegenerator" /> |
| <enableLazyFieldLoading>true</enableLazyFieldLoading> |
| |
| <queryResultWindowSize>20</queryResultWindowSize> |
| <queryResultMaxDocsCached>200</queryResultMaxDocsCached> |
| <listener event="newSearcher" class="solr.QuerySenderListener"> |
| <arr name="queries"> |
| </arr> |
| </listener> |
| <listener event="firstSearcher" class="solr.QuerySenderListener"> |
| <arr name="queries"> |
| <lst> |
| <str name="q">static firstSearcher warming in solrconfig.xml</str> |
| </lst> |
| </arr> |
| </listener> |
| |
| <useColdSearcher>true</useColdSearcher> |
| |
| <maxWarmingSearchers>2</maxWarmingSearchers> |
| |
| </query> |
| |
| <requestDispatcher handleSelect="false" > |
| |
| <requestParsers enableRemoteStreaming="true" |
| multipartUploadLimitInKB="2048000" |
| formdataUploadLimitInKB="2048" |
| addHttpRequestToContext="false"/> |
| |
| <httpCaching never304="true" /> |
| </requestDispatcher> |
| |
| <requestHandler name="/dataimport" class="solr.DataImportHandler"> |
| <lst name="defaults"> |
| <str name="config">solr-data-config.xml</str> |
| </lst> |
| </requestHandler> |
| |
| <requestHandler name="/select" class="solr.SearchHandler"> |
| <lst name="defaults"> |
| <str name="echoParams">explicit</str> |
| <int name="rows">10</int> |
| <str name="df">text</str> |
| </lst> |
| </requestHandler> |
| |
| <requestHandler name="/query" class="solr.SearchHandler"> |
| <lst name="defaults"> |
| <str name="echoParams">explicit</str> |
| <str name="wt">json</str> |
| <str name="indent">true</str> |
| <str name="df">text</str> |
| </lst> |
| </requestHandler> |
| |
| <requestHandler name="/get" class="solr.RealTimeGetHandler"> |
| <lst name="defaults"> |
| <str name="omitHeader">true</str> |
| <str name="wt">json</str> |
| <str name="indent">true</str> |
| </lst> |
| </requestHandler> |
| |
| <requestHandler name="/browse" class="solr.SearchHandler"> |
| <lst name="defaults"> |
| <str name="echoParams">explicit</str> |
| |
| <!-- VelocityResponseWriter settings --> |
| <str name="wt">velocity</str> |
| <str name="v.template">browse</str> |
| <str name="v.layout">layout</str> |
| |
| <!-- Query settings --> |
| <str name="defType">edismax</str> |
| <str name="q.alt">*:*</str> |
| <str name="rows">10</str> |
| <str name="fl">*,score</str> |
| |
| <!-- Faceting defaults --> |
| <str name="facet">on</str> |
| <str name="facet.mincount">1</str> |
| </lst> |
| </requestHandler> |
| |
| |
| <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse"> |
| <lst name="defaults"> |
| <str name="df">text</str> |
| <str name="update.chain">add-unknown-fields-to-the-schema</str> |
| </lst> |
| </initParams> |
| |
| <requestHandler name="/update" class="solr.UpdateRequestHandler"> |
| </requestHandler> |
| |
| <requestHandler name="/update/extract" |
| startup="lazy" |
| class="solr.extraction.ExtractingRequestHandler" > |
| <lst name="defaults"> |
| <str name="lowernames">true</str> |
| <str name="uprefix">ignored_</str> |
| |
| <!-- capture link hrefs but ignore div attributes --> |
| <str name="captureAttr">true</str> |
| <str name="fmap.a">links</str> |
| <str name="fmap.div">ignored_</str> |
| </lst> |
| </requestHandler> |
| |
| <requestHandler name="/analysis/field" |
| startup="lazy" |
| class="solr.FieldAnalysisRequestHandler" /> |
| |
| <requestHandler name="/analysis/document" |
| class="solr.DocumentAnalysisRequestHandler" |
| startup="lazy" /> |
| |
| <requestHandler name="/admin/ping" class="solr.PingRequestHandler"> |
| <lst name="invariants"> |
| <str name="q">solrpingquery</str> |
| </lst> |
| <lst name="defaults"> |
| <str name="echoParams">all</str> |
| </lst> |
| </requestHandler> |
| |
| <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > |
| <lst name="defaults"> |
| <str name="echoParams">explicit</str> |
| <str name="echoHandler">true</str> |
| </lst> |
| </requestHandler> |
| |
| <requestHandler name="/replication" class="solr.ReplicationHandler" > |
| </requestHandler> |
| |
| <searchComponent name="spellcheck" class="solr.SpellCheckComponent"> |
| |
| <str name="queryAnalyzerFieldType">key_lower_case</str> |
| |
| <lst name="spellchecker"> |
| <str name="name">default</str> |
| <str name="field">text</str> |
| <str name="classname">solr.DirectSolrSpellChecker</str> |
| <str name="distanceMeasure">internal</str> |
| <float name="accuracy">0.5</float> |
| <int name="maxEdits">2</int> |
| <int name="minPrefix">1</int> |
| <int name="maxInspections">5</int> |
| <int name="minQueryLength">4</int> |
| <float name="maxQueryFrequency">0.01</float> |
| </lst> |
| |
| <lst name="spellchecker"> |
| <str name="name">wordbreak</str> |
| <str name="classname">solr.WordBreakSolrSpellChecker</str> |
| <str name="field">name</str> |
| <str name="combineWords">true</str> |
| <str name="breakWords">true</str> |
| <int name="maxChanges">10</int> |
| </lst> |
| </searchComponent> |
| |
| <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> |
| <lst name="defaults"> |
| <str name="df">text</str> |
| <str name="spellcheck.dictionary">default</str> |
| <str name="spellcheck.dictionary">wordbreak</str> |
| <str name="spellcheck">on</str> |
| <str name="spellcheck.extendedResults">true</str> |
| <str name="spellcheck.count">10</str> |
| <str name="spellcheck.alternativeTermCount">5</str> |
| <str name="spellcheck.maxResultsForSuggest">5</str> |
| <str name="spellcheck.collate">true</str> |
| <str name="spellcheck.collateExtendedResults">true</str> |
| <str name="spellcheck.maxCollationTries">10</str> |
| <str name="spellcheck.maxCollations">5</str> |
| </lst> |
| <arr name="last-components"> |
| <str>spellcheck</str> |
| </arr> |
| </requestHandler> |
| |
| <searchComponent name="suggest" class="solr.SuggestComponent"> |
| <lst name="suggester"> |
| <str name="name">mySuggester</str> |
| <str name="lookupImpl">FuzzyLookupFactory</str> |
| <str name="dictionaryImpl">DocumentDictionaryFactory</str> |
| <str name="field">cat</str> |
| <str name="weightField">price</str> |
| <str name="suggestAnalyzerFieldType">string</str> |
| </lst> |
| </searchComponent> |
| |
| <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> |
| <lst name="defaults"> |
| <str name="suggest">true</str> |
| <str name="suggest.count">10</str> |
| </lst> |
| <arr name="components"> |
| <str>suggest</str> |
| </arr> |
| </requestHandler> |
| |
| <searchComponent name="tvComponent" class="solr.TermVectorComponent"/> |
| |
| <requestHandler name="/tvrh" class="solr.SearchHandler" startup="lazy"> |
| <lst name="defaults"> |
| <str name="df">text</str> |
| <bool name="tv">true</bool> |
| </lst> |
| <arr name="last-components"> |
| <str>tvComponent</str> |
| </arr> |
| </requestHandler> |
| |
| <searchComponent name="clustering" |
| enable="${solr.clustering.enabled:false}" |
| class="solr.clustering.ClusteringComponent" > |
| <lst name="engine"> |
| <str name="name">lingo</str> |
| <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str> |
| <str name="carrot.resourcesDir">clustering/carrot2</str> |
| </lst> |
| <lst name="engine"> |
| <str name="name">stc</str> |
| <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str> |
| </lst> |
| <lst name="engine"> |
| <str name="name">kmeans</str> |
| <str name="carrot.algorithm">org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm</str> |
| </lst> |
| </searchComponent> |
| |
| <requestHandler name="/clustering" |
| startup="lazy" |
| enable="${solr.clustering.enabled:false}" |
| class="solr.SearchHandler"> |
| <lst name="defaults"> |
| <bool name="clustering">true</bool> |
| <bool name="clustering.results">true</bool> |
| <str name="carrot.title">name</str> |
| <str name="carrot.url">id</str> |
| <str name="carrot.snippet">features</str> |
| <bool name="carrot.produceSummary">true</bool> |
| <bool name="carrot.outputSubClusters">false</bool> |
| <str name="defType">edismax</str> |
| <str name="qf"> |
| text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 |
| </str> |
| <str name="q.alt">*:*</str> |
| <str name="rows">10</str> |
| <str name="fl">*,score</str> |
| </lst> |
| <arr name="last-components"> |
| <str>clustering</str> |
| </arr> |
| </requestHandler> |
| |
| <searchComponent name="terms" class="solr.TermsComponent"/> |
| |
| <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy"> |
| <lst name="defaults"> |
| <bool name="terms">true</bool> |
| <bool name="distrib">false</bool> |
| </lst> |
| <arr name="components"> |
| <str>terms</str> |
| </arr> |
| </requestHandler> |
| |
| <searchComponent name="elevator" class="solr.QueryElevationComponent" > |
| <str name="queryFieldType">string</str> |
| <str name="config-file">elevate.xml</str> |
| </searchComponent> |
| |
| <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy"> |
| <lst name="defaults"> |
| <str name="echoParams">explicit</str> |
| <str name="df">text</str> |
| </lst> |
| <arr name="last-components"> |
| <str>elevator</str> |
| </arr> |
| </requestHandler> |
| |
| <searchComponent class="solr.HighlightComponent" name="highlight"> |
| <highlighting> |
| <fragmenter name="gap" |
| default="true" |
| class="solr.highlight.GapFragmenter"> |
| <lst name="defaults"> |
| <int name="hl.fragsize">100</int> |
| </lst> |
| </fragmenter> |
| |
| <fragmenter name="regex" |
| class="solr.highlight.RegexFragmenter"> |
| <lst name="defaults"> |
| <int name="hl.fragsize">70</int> |
| <float name="hl.regex.slop">0.5</float> |
| <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str> |
| </lst> |
| </fragmenter> |
| |
| <formatter name="html" |
| default="true" |
| class="solr.highlight.HtmlFormatter"> |
| <lst name="defaults"> |
| <str name="hl.simple.pre"><![CDATA[<em>]]></str> |
| <str name="hl.simple.post"><![CDATA[</em>]]></str> |
| </lst> |
| </formatter> |
| |
| <encoder name="html" |
| class="solr.highlight.HtmlEncoder" /> |
| |
| <fragListBuilder name="simple" |
| class="solr.highlight.SimpleFragListBuilder"/> |
| |
| <fragListBuilder name="single" |
| class="solr.highlight.SingleFragListBuilder"/> |
| |
| <fragListBuilder name="weighted" |
| default="true" |
| class="solr.highlight.WeightedFragListBuilder"/> |
| |
| <fragmentsBuilder name="default" |
| default="true" |
| class="solr.highlight.ScoreOrderFragmentsBuilder"> |
| |
| </fragmentsBuilder> |
| |
| <fragmentsBuilder name="colored" |
| class="solr.highlight.ScoreOrderFragmentsBuilder"> |
| <lst name="defaults"> |
| <str name="hl.tag.pre"><![CDATA[ |
| <b style="background:yellow">,<b style="background:lawgreen">, |
| <b style="background:aquamarine">,<b style="background:magenta">, |
| <b style="background:palegreen">,<b style="background:coral">, |
| <b style="background:wheat">,<b style="background:khaki">, |
| <b style="background:lime">,<b style="background:deepskyblue">]]></str> |
| <str name="hl.tag.post"><![CDATA[</b>]]></str> |
| </lst> |
| </fragmentsBuilder> |
| |
| <boundaryScanner name="default" |
| default="true" |
| class="solr.highlight.SimpleBoundaryScanner"> |
| <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> |
| |
| <updateRequestProcessorChain name="add-unknown-fields-to-the-schema"> |
| |
| <processor class="solr.RemoveBlankFieldUpdateProcessorFactory"/> |
| <processor class="solr.ParseBooleanFieldUpdateProcessorFactory"/> |
| <processor class="solr.ParseLongFieldUpdateProcessorFactory"/> |
| <processor class="solr.ParseDoubleFieldUpdateProcessorFactory"/> |
| <processor class="solr.ParseDateFieldUpdateProcessorFactory"> |
| <arr name="format"> |
| <str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str> |
| <str>yyyy-MM-dd'T'HH:mm:ss,SSSZ</str> |
| <str>yyyy-MM-dd'T'HH:mm:ss.SSS</str> |
| <str>yyyy-MM-dd'T'HH:mm:ss,SSS</str> |
| <str>yyyy-MM-dd'T'HH:mm:ssZ</str> |
| <str>yyyy-MM-dd'T'HH:mm:ss</str> |
| <str>yyyy-MM-dd'T'HH:mmZ</str> |
| <str>yyyy-MM-dd'T'HH:mm</str> |
| <str>yyyy-MM-dd HH:mm:ss.SSSZ</str> |
| <str>yyyy-MM-dd HH:mm:ss,SSSZ</str> |
| <str>yyyy-MM-dd HH:mm:ss.SSS</str> |
| <str>yyyy-MM-dd HH:mm:ss,SSS</str> |
| <str>yyyy-MM-dd HH:mm:ssZ</str> |
| <str>yyyy-MM-dd HH:mm:ss</str> |
| <str>yyyy-MM-dd HH:mmZ</str> |
| <str>yyyy-MM-dd HH:mm</str> |
| <str>yyyy-MM-dd</str> |
| </arr> |
| </processor> |
| <processor class="solr.AddSchemaFieldsUpdateProcessorFactory"> |
| <str name="defaultFieldType">key_lower_case</str> |
| <lst name="typeMapping"> |
| <str name="valueClass">java.lang.Boolean</str> |
| <str name="fieldType">booleans</str> |
| </lst> |
| <lst name="typeMapping"> |
| <str name="valueClass">java.util.Date</str> |
| <str name="fieldType">tdates</str> |
| </lst> |
| <lst name="typeMapping"> |
| <str name="valueClass">java.lang.Long</str> |
| <str name="valueClass">java.lang.Integer</str> |
| <str name="fieldType">tlongs</str> |
| </lst> |
| <lst name="typeMapping"> |
| <str name="valueClass">java.lang.Number</str> |
| <str name="fieldType">tdoubles</str> |
| </lst> |
| </processor> |
| |
| <processor class="solr.LogUpdateProcessorFactory"/> |
| <processor class="solr.RunUpdateProcessorFactory"/> |
| </updateRequestProcessorChain> |
| |
| <queryResponseWriter name="json" class="solr.JSONResponseWriter"> |
| <str name="content-type">text/plain; charset=UTF-8</str> |
| </queryResponseWriter> |
| |
| <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"> |
| <str name="template.base.dir">${velocity.template.base.dir:}</str> |
| </queryResponseWriter> |
| |
| <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter"> |
| <int name="xsltCacheLifetimeSeconds">5</int> |
| </queryResponseWriter> |
| |
| <admin> |
| <defaultQuery>*:*</defaultQuery> |
| </admin> |
| |
| </config> |