@ -83,6 +83,7 @@
<lib dir= "${solr.install.dir:../../../..}/contrib/velocity/lib" regex= ".*\.jar" />
<lib dir= "${solr.install.dir:../../../..}/dist/" regex= "solr-velocity-\d.*\.jar" />
<!-- an exact 'path' can be used instead of a 'dir' to specify a
specific jar file. This will cause a serious error to be logged
if it can't be loaded.
@ -112,7 +113,8 @@
One can force a particular implementation via solr.MMapDirectoryFactory,
solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
solr.RAMDirectoryFactory is memory based and not persistent.
solr.RAMDirectoryFactory is memory based, not
persistent, and doesn't work with replication.
-->
<directoryFactory name= "DirectoryFactory"
class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
@ -204,7 +206,7 @@
More details on the nuances of each LockFactory...
http://wiki.apache.org/lucene-java/AvailableLockFactories
-->
<lockType > ${solr.lock.type:singl e}</lockType>
<lockType > ${solr.lock.type:nativ e}</lockType>
<!-- Commit Deletion Policy
Custom deletion policies can be specified here. The class must
@ -331,6 +333,29 @@
postCommit - fired after every commit or optimize command
postOptimize - fired after every optimize command
-->
<!-- The RunExecutableListener executes an external command from a
hook such as postCommit or postOptimize.
exe - the name of the executable to run
dir - dir to use as the current working directory. (default=".")
wait - the calling thread waits until the executable returns.
(default="true")
args - the arguments to pass to the program. (default is none)
env - environment variables to set. (default is none)
-->
<!-- This example shows how RunExecutableListener could be used
with the script based replication...
http://wiki.apache.org/solr/CollectionDistribution
-->
<!--
<listener event= "postCommit" class= "solr.RunExecutableListener" >
<str name= "exe" > solr/bin/snapshooter</str>
<str name= "dir" > .</str>
<bool name= "wait" > true</bool>
<arr name= "args" > <str > arg1</str> <str > arg2</str> </arr>
<arr name= "env" > <str > MYVAR=val1</str> </arr>
</listener>
-->
</updateHandler>
@ -366,14 +391,22 @@
Query section - these settings control query time things like caches
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<query >
<!-- Max Boolean Clauses
Maximum number of clauses in each BooleanQuery, an exception
is thrown if exceeded.
** WARNING **
This option actually modifies a global Lucene property that
will affect all SolrCores. If multiple solrconfig.xml files
disagree on this property, the value at any given moment will
be based on the last SolrCore to be initialized.
<!-- Maximum number of clauses in each BooleanQuery, an exception
is thrown if exceeded. It is safe to increase or remove this setting,
since it is purely an arbitrary limit to try and catch user errors where
large boolean queries may not be the best implementation choice.
-->
<maxBooleanClauses > 1024</maxBooleanClauses>
<!-- Solr Internal Query Caches
There are two implementations of cache available for Solr,
@ -575,8 +608,21 @@
This section contains instructions for how the SolrDispatchFilter
should behave when processing requests for this SolrCore.
handleSelect is a legacy option that affects the behavior of requests
such as /select?qt=XXX
handleSelect="true" will cause the SolrDispatchFilter to process
the request and dispatch the query to a handler specified by the
"qt" param, assuming "/select" isn't already registered.
handleSelect="false" will cause the SolrDispatchFilter to
ignore "/select" requests, resulting in a 404 unless a handler
is explicitly registered with the name "/select"
handleSelect="true" is not recommended for new users, but is the default
for backwards compatibility
-->
<requestDispatcher >
<requestDispatcher handleSelect= "false" >
<!-- Request Parsing
These settings indicate how Solr Requests may be parsed, and
@ -602,14 +648,15 @@
plugins.
*** WARNING ***
Before enabling remote streaming, you should make sure your
system has authentication enabled.
The settings below authorize Solr to fetch remote files, You
should make sure your system has some authentication before
using enableRemoteStreaming="true"
<requestParsers enableRemoteStreaming= "false"
multipartUploadLimitInKB="-1"
formdataUploadLimitInKB="-1"
addHttpRequestToContext="false"/>
-->
<requestParsers enableRemoteStreaming= "true"
multipartUploadLimitInKB="2048000"
formdataUploadLimitInKB="2048"
addHttpRequestToContext="false"/>
<!-- HTTP Caching
@ -673,6 +720,14 @@
Incoming queries will be dispatched to a specific handler by name
based on the path specified in the request.
Legacy behavior: If the request path uses "/select" but no Request
Handler has that name, and if handleSelect="true" has been specified in
the requestDispatcher, then the Request Handler is dispatched based on
the qt parameter. Handlers without a leading '/' are accessed this way
like so: http://host/app/[core/]select?qt=name If no qt is
given, then the requestHandler that declares default="true" will be
used or the one named "standard".
If a Request Handler is declared with startup="lazy", then it will
not be initialized until the first request that uses it.
@ -692,13 +747,9 @@
-->
<lst name= "defaults" >
<str name= "echoParams" > explicit</str>
<str name= "q.op" > AND</str>
<int name= "rows" > 10</int>
<!-- Default search field
<str name= "df" > text</str>
-->
<!-- Change from JSON to XML format (the default prior to Solr 7.0)
<str name= "wt" > xml</str>
-->
<!-- <str name="df">text</str> -->
</lst>
<!-- In addition to defaults, "appends" params can be specified
to identify values which should be appended to the list of
@ -781,10 +832,18 @@
<initParams path= "/update/**,/query,/select,/tvrh,/elevate,/spell,/browse" >
<lst name= "defaults" >
<str name= "df" > _text _</str>
<str name= "df" > __all </str>
</lst>
</initParams>
<!-- This enabled schemaless mode
<initParams path= "/update/**" >
<lst name= "defaults" >
<str name= "update.chain" > add-unknown-fields-to-the-schema</str>
</lst>
</initParams>
-->
<!-- Solr Cell Update Request Handler
http://wiki.apache.org/solr/ExtractingRequestHandler
@ -796,10 +855,9 @@
<lst name= "defaults" >
<str name= "lowernames" > true</str>
<str name= "fmap.meta" > ignored_</str>
<str name= "fmap.content" > _text _</str>
<str name= "fmap.content" > __all </str>
</lst>
</requestHandler>
<!-- Search Components
Search components are registered to SolrCore and used by
@ -861,7 +919,7 @@
<!-- a spellchecker built from a field of the main index -->
<lst name= "spellchecker" >
<str name= "name" > default</str>
<str name= "field" > _text _</str>
<str name= "field" > __all </str>
<str name= "classname" > solr.DirectSolrSpellChecker</str>
<!-- the spellcheck distance measure used, the default is the internal levenshtein -->
<str name= "distanceMeasure" > internal</str>
@ -986,6 +1044,7 @@
<searchComponent name= "elevator" class= "solr.QueryElevationComponent" >
<!-- pick a fieldType to analyze queries -->
<str name= "queryFieldType" > string</str>
<str name= "config-file" > elevate.xml</str>
</searchComponent>
<!-- A request handler for demonstrating the elevator component -->
@ -1116,81 +1175,70 @@
<!-- Add unknown fields to the schema
Field type guessing update processors that will
An example field type guessing update processor that will
attempt to parse string-typed field values as Booleans, Longs,
Doubles, or Dates, and then add schema fields with the guessed
field types. Text content will be indexed as "text_general" as
well as a copy to a plain string version in *_str.
field types.
These require that the schema is both managed and mutable, by
This requires that the schema is both managed and mutable, by
declaring schemaFactory as ManagedIndexSchemaFactory, with
mutable specified as true.
See http://wiki.apache.org/solr/GuessingFieldTypes
-->
<update Processor class= "solr.UUIDUpdateProcessorFactory" name= "uuid" / >
<updateProcessor class= "solr.RemoveBlankFieldUpdateProcessorFactory" name= "remove-blank" / >
<updateProcessor class= "solr.FieldNameMutatingUpdateProcessorFactory" name= "field-name-mutating" >
< str name= "pattern" > [^\w-\.]</str >
< str name= "replacement" > _</str >
</updateProcesso r>
<updateProcessor class= "solr.ParseBooleanFieldUpdateProcessorFactory" name= "parse-boolean" / >
<updateProcessor class= "solr.ParseLongFieldUpdateProcessorFactory" name= "parse-long" / >
<updateProcessor class= "solr.ParseDoubleFieldUpdateProcessorFactory" name= "parse-double "/>
<updateProcessor class= "solr.ParseDateFieldUpdateProcessorFactory" name= "parse-date" >
< 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.SSS Z</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>
</ar r>
</updateProcesso r>
<updateProcessor class= "solr.AddSchemaFieldsUpdateProcessorFactory" name= "add-schema-fields" >
< lst name= "typeMapping" >
<str name= "valueClass" > java.lang.String</str >
<str name= " fieldType"> text_general </str>
<lst name= " copyField ">
<str name= " dest"> *_str </str>
< int name= "maxChars" > 256</int >
<update RequestProcessorChain name= "add-unknown-fields-to-the-schema" >
<!-- UUIDUpdateProcessorFactory will generate an id if none is present in the incoming document -- >
<processor class= "solr.UUIDUpdateProcessorFactory" / >
< processor class= "solr.RemoveBlankFieldUpdateProcessorFactory" / >
< processor class= "solr.FieldNameMutatingUpdateProcessorFactory" >
<str name= "pattern" > [^\w-\.]</st r>
<str name= "replacement" > _</str >
</processor >
<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:ss Z</str>
<str > yyyy-MM-dd'T'HH:mm:ss </str>
<str > yyyy-MM-dd'T'HH:mm Z</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:ss Z</str>
<str > yyyy-MM-dd HH:mm:ss </str>
<str > yyyy-MM-dd HH:mmZ </str>
<str > yyyy-MM-dd HH:mm</st r>
<str > yyyy-MM-dd</st r>
</arr >
< /processor >
<processor class= "solr.AddSchemaFieldsUpdateProcessorFactory" >
<str name= " defaultFieldType"> strings </str>
<lst name= " typeMapping ">
<str name= " valueClass"> java.lang.Boolean </str>
< str name= "fieldType" > booleans</str >
</lst>
<!-- Use as default mapping instead of defaultFieldType -->
<bool name= "default" > true</bool>
</lst>
<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" > pdates</str>
</lst>
<lst name= "typeMapping" >
<str name= "valueClass" > java.lang.Long</str>
<str name= "valueClass" > java.lang.Integer</str>
<str name= "fieldType" > plongs</str>
</lst>
<lst name= "typeMapping" >
<str name= "valueClass" > java.lang.Number</str>
<str name= "fieldType" > pdoubles</str>
</lst>
</updateProcessor>
<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>
<!-- The update.autoCreateFields property can be turned to false to disable schemaless mode -->
<updateRequestProcessorChain name= "add-unknown-fields-to-the-schema" default= "${update.autoCreateFields:true}"
processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields">
<processor class= "solr.LogUpdateProcessorFactory" />
<processor class= "solr.DistributedUpdateProcessorFactory" />
<processor class= "solr.RunUpdateProcessorFactory" />
@ -1313,7 +1361,7 @@
<!-- Query Parsers
https://lucene.apache.org/solr/guide/query-syntax-and-parsing.html
https://cwiki.apache.org/confluence/display/solr/Query+Syntax+and+Parsing
Multiple QParserPlugins can be registered by name, and then
used in either the "defType" param for the QueryComponent (used
@ -1361,4 +1409,4 @@
EditorialMarkerFactory will do exactly that:
<transformer name= "qecBooster" class= "org.apache.solr.response.transform.EditorialMarkerFactory" />
-->
</config>
</config>