mirror of
https://github.com/silverstripe/silverstripe-fulltextsearch
synced 2024-10-22 14:05:29 +02:00
NEW Ensure commits are visible to seachers (fixes #274)
This is required in situations where autoCommit.openSearcher is set to "false", and you don't want to rely on core restarts to make committed index updates available to new searches. It's already configured like this in the Common Web Platform environments, so this change will mainly affect other environments (such as Silverstripe Platform). To opt out of this new behaviour, set up a custom solrconfig.xml. More details in https://github.com/silverstripe/silverstripe-fulltextsearch/issues/274
This commit is contained in:
parent
4be5de76a5
commit
8876a47f0d
@ -16,9 +16,9 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
<!--
|
||||
For more details about configurations options that may appear in
|
||||
this file, see http://wiki.apache.org/solr/SolrConfigXml.
|
||||
this file, see http://wiki.apache.org/solr/SolrConfigXml.
|
||||
-->
|
||||
<config>
|
||||
<!-- In all configuration below, a prefix of "solr." for class names
|
||||
@ -46,19 +46,19 @@
|
||||
instanceDir.
|
||||
|
||||
Please note that <lib/> directives are processed in the order
|
||||
that they appear in your solrconfig.xml file, and are "stacked"
|
||||
on top of each other when building a ClassLoader - so if you have
|
||||
plugin jars with dependencies on other jars, the "lower level"
|
||||
that they appear in your solrconfig.xml file, and are "stacked"
|
||||
on top of each other when building a ClassLoader - so if you have
|
||||
plugin jars with dependencies on other jars, the "lower level"
|
||||
dependency jars should be loaded first.
|
||||
|
||||
If a "./lib" directory exists in your instanceDir, all files
|
||||
found in it are included as if you had used the following
|
||||
syntax...
|
||||
|
||||
|
||||
<lib dir="./lib" />
|
||||
-->
|
||||
|
||||
<!-- A 'dir' option by itself adds any files found in the directory
|
||||
<!-- A 'dir' option by itself adds any files found in the directory
|
||||
to the classpath, this is useful for including all jars in a
|
||||
directory.
|
||||
|
||||
@ -69,11 +69,11 @@
|
||||
If a 'dir' option (with or without a regex) is used and nothing
|
||||
is found that matches, a warning will be logged.
|
||||
|
||||
The examples below can be used to load some solr-contribs along
|
||||
The examples below can be used to load some solr-contribs along
|
||||
with their external dependencies.
|
||||
-->
|
||||
<lib dir="./lib" />
|
||||
|
||||
|
||||
<lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
|
||||
<lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />
|
||||
|
||||
@ -86,14 +86,14 @@
|
||||
<lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
|
||||
<lib 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
|
||||
<!-- 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.
|
||||
-->
|
||||
<!--
|
||||
<lib path="../a-jar-that-does-not-exist.jar" />
|
||||
<lib path="../a-jar-that-does-not-exist.jar" />
|
||||
-->
|
||||
|
||||
|
||||
<!-- Data Directory
|
||||
|
||||
Used to specify an alternate directory to hold all index data
|
||||
@ -105,7 +105,7 @@
|
||||
|
||||
|
||||
<!-- The DirectoryFactory to use for indexes.
|
||||
|
||||
|
||||
solr.StandardDirectoryFactory is filesystem
|
||||
based and tries to pick the best implementation for the current
|
||||
JVM and platform. solr.NRTCachingDirectoryFactory, the default,
|
||||
@ -118,8 +118,8 @@
|
||||
solr.RAMDirectoryFactory is memory based, not
|
||||
persistent, and doesn't work with replication.
|
||||
-->
|
||||
<directoryFactory name="DirectoryFactory"
|
||||
class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
|
||||
<directoryFactory name="DirectoryFactory"
|
||||
class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
|
||||
|
||||
<!-- The CodecFactory for defining the format of the inverted index.
|
||||
The default implementation is SchemaCodecFactory, which is the official Lucene
|
||||
@ -133,24 +133,24 @@
|
||||
<codecFactory class="solr.SchemaCodecFactory"/>
|
||||
|
||||
<!-- To enable dynamic schema REST APIs, use the following for <schemaFactory>:
|
||||
|
||||
|
||||
<schemaFactory class="ManagedIndexSchemaFactory">
|
||||
<bool name="mutable">true</bool>
|
||||
<str name="managedSchemaResourceName">managed-schema</str>
|
||||
</schemaFactory>
|
||||
|
||||
|
||||
When ManagedIndexSchemaFactory is specified, Solr will load the schema from
|
||||
he resource named in 'managedSchemaResourceName', rather than from schema.xml.
|
||||
Note that the managed schema resource CANNOT be named schema.xml. If the managed
|
||||
schema does not exist, Solr will create it after reading schema.xml, then rename
|
||||
'schema.xml' to 'schema.xml.bak'.
|
||||
|
||||
'schema.xml' to 'schema.xml.bak'.
|
||||
|
||||
Do NOT hand edit the managed schema - external modifications will be ignored and
|
||||
overwritten as a result of schema modification REST API calls.
|
||||
|
||||
When ManagedIndexSchemaFactory is specified with mutable = true, schema
|
||||
modification REST API calls will be allowed; otherwise, error responses will be
|
||||
sent back for these requests.
|
||||
sent back for these requests.
|
||||
-->
|
||||
<schemaFactory class="ClassicIndexSchemaFactory"/>
|
||||
|
||||
@ -158,12 +158,12 @@
|
||||
Index Config - These settings control low-level behavior of indexing
|
||||
Most example settings here show the default value, but are commented
|
||||
out, to more easily see where customizations have been made.
|
||||
|
||||
|
||||
Note: This replaces <indexDefaults> and <mainIndex> from older versions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
|
||||
<indexConfig>
|
||||
<!-- maxFieldLength was removed in 4.0. To get similar behavior, include a
|
||||
LimitTokenCountFilterFactory in your fieldType definition. E.g.
|
||||
<!-- maxFieldLength was removed in 4.0. To get similar behavior, include a
|
||||
LimitTokenCountFilterFactory in your fieldType definition. E.g.
|
||||
<filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="10000"/>
|
||||
-->
|
||||
<!-- Maximum time to wait for a write lock (ms) for an IndexWriter. Default: 1000 -->
|
||||
@ -175,8 +175,8 @@
|
||||
Default in Solr/Lucene is 8. -->
|
||||
<!-- <maxIndexingThreads>8</maxIndexingThreads> -->
|
||||
|
||||
<!-- Expert: Enabling compound file will use less files for the index,
|
||||
using fewer file descriptors on the expense of performance decrease.
|
||||
<!-- Expert: Enabling compound file will use less files for the index,
|
||||
using fewer file descriptors on the expense of performance decrease.
|
||||
Default in Lucene is "true". Default in Solr is "false" (since 3.6) -->
|
||||
<!-- <useCompoundFile>false</useCompoundFile> -->
|
||||
|
||||
@ -191,7 +191,7 @@
|
||||
<!-- <ramBufferSizeMB>100</ramBufferSizeMB> -->
|
||||
<!-- <maxBufferedDocs>1000</maxBufferedDocs> -->
|
||||
|
||||
<!-- Expert: Merge Policy
|
||||
<!-- Expert: Merge Policy
|
||||
The Merge Policy in Lucene controls how merging of segments is done.
|
||||
The default since Solr/Lucene 3.3 is TieredMergePolicy.
|
||||
The default since Lucene 2.3 was the LogByteSizeMergePolicy,
|
||||
@ -203,7 +203,7 @@
|
||||
<int name="segmentsPerTier">10</int>
|
||||
</mergePolicy>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Merge Factor
|
||||
The merge factor controls how many segments will get merged at a time.
|
||||
For TieredMergePolicy, mergeFactor is a convenience parameter which
|
||||
@ -212,7 +212,7 @@
|
||||
will be allowed before they are merged into one.
|
||||
Default is 10 for both merge policies.
|
||||
-->
|
||||
<!--
|
||||
<!--
|
||||
<mergeFactor>10</mergeFactor>
|
||||
-->
|
||||
|
||||
@ -222,15 +222,15 @@
|
||||
can perform merges in the background using separate threads.
|
||||
The SerialMergeScheduler (Lucene 2.2 default) does not.
|
||||
-->
|
||||
<!--
|
||||
<!--
|
||||
<mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>
|
||||
-->
|
||||
|
||||
<!-- LockFactory
|
||||
<!-- LockFactory
|
||||
|
||||
This option specifies which Lucene LockFactory implementation
|
||||
to use.
|
||||
|
||||
|
||||
single = SingleInstanceLockFactory - suggested for a
|
||||
read-only index or when there is no possibility of
|
||||
another process trying to modify the index.
|
||||
@ -259,7 +259,7 @@
|
||||
<!--
|
||||
<unlockOnStartup>false</unlockOnStartup>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Expert: Controls how often Lucene loads terms into memory
|
||||
Default is 128 and is likely good for most everyone.
|
||||
-->
|
||||
@ -268,7 +268,7 @@
|
||||
<!-- If true, IndexReaders will be reopened (often more efficient)
|
||||
instead of closed and then opened. Default: true
|
||||
-->
|
||||
<!--
|
||||
<!--
|
||||
<reopenReaders>true</reopenReaders>
|
||||
-->
|
||||
|
||||
@ -279,11 +279,11 @@
|
||||
The default Solr IndexDeletionPolicy implementation supports
|
||||
deleting index commit points on number of commits, age of
|
||||
commit point and optimized status.
|
||||
|
||||
|
||||
The latest commit point should always be preserved regardless
|
||||
of the criteria.
|
||||
-->
|
||||
<!--
|
||||
<!--
|
||||
<deletionPolicy class="solr.SolrDeletionPolicy">
|
||||
-->
|
||||
<!-- The number of commit points to be kept -->
|
||||
@ -298,12 +298,12 @@
|
||||
<str name="maxCommitAge">30MINUTES</str>
|
||||
<str name="maxCommitAge">1DAY</str>
|
||||
-->
|
||||
<!--
|
||||
<!--
|
||||
</deletionPolicy>
|
||||
-->
|
||||
|
||||
<!-- Lucene Infostream
|
||||
|
||||
|
||||
To aid in advanced debugging, Lucene provides an "InfoStream"
|
||||
of detailed information when indexing.
|
||||
|
||||
@ -316,7 +316,7 @@
|
||||
|
||||
|
||||
<!-- JMX
|
||||
|
||||
|
||||
This example enables JMX if and only if an existing MBeanServer
|
||||
is found, use this if you want to configure JMX through JVM
|
||||
parameters. Remove this to disable exposing Solr configuration
|
||||
@ -326,7 +326,7 @@
|
||||
-->
|
||||
<jmx />
|
||||
<!-- If you want to connect to a particular server, specify the
|
||||
agentId
|
||||
agentId
|
||||
-->
|
||||
<!-- <jmx agentId="myAgent" /> -->
|
||||
<!-- If you want to start a new MBeanServer, specify the serviceUrl -->
|
||||
@ -341,16 +341,16 @@
|
||||
uncommitted changes to the index, so use of a hard autoCommit
|
||||
is recommended (see below).
|
||||
"dir" - the target directory for transaction logs, defaults to the
|
||||
solr data directory. -->
|
||||
solr data directory. -->
|
||||
<updateLog>
|
||||
<str name="dir">${solr.ulog.dir:}</str>
|
||||
</updateLog>
|
||||
|
||||
|
||||
<!-- AutoCommit
|
||||
|
||||
Perform a hard commit automatically under certain conditions.
|
||||
Instead of enabling autoCommit, consider using "commitWithin"
|
||||
when adding documents.
|
||||
when adding documents.
|
||||
|
||||
http://wiki.apache.org/solr/UpdateXmlMessages
|
||||
|
||||
@ -359,7 +359,7 @@
|
||||
|
||||
maxTime - Maximum amount of time in ms that is allowed to pass
|
||||
since a document was added before automatically
|
||||
triggering a new commit.
|
||||
triggering a new commit.
|
||||
openSearcher - if false, the commit causes recent index changes
|
||||
to be flushed to stable storage, but does not cause a new
|
||||
searcher to be opened to make those changes visible.
|
||||
@ -367,9 +367,9 @@
|
||||
If the updateLog is enabled, then it's highly recommended to
|
||||
have some sort of hard autoCommit to limit the log size.
|
||||
-->
|
||||
<autoCommit>
|
||||
<maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
|
||||
<openSearcher>false</openSearcher>
|
||||
<autoCommit>
|
||||
<maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
|
||||
<openSearcher>false</openSearcher>
|
||||
</autoCommit>
|
||||
|
||||
<!-- softAutoCommit is like autoCommit except it causes a
|
||||
@ -378,12 +378,12 @@
|
||||
faster and more near-realtime friendly than a hard commit.
|
||||
-->
|
||||
|
||||
<autoSoftCommit>
|
||||
<maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>
|
||||
<autoSoftCommit>
|
||||
<maxTime>${solr.autoSoftCommit.maxTime:60000}</maxTime>
|
||||
</autoSoftCommit>
|
||||
|
||||
<!-- Update Related Event Listeners
|
||||
|
||||
|
||||
Various IndexWriter related events can trigger Listeners to
|
||||
take actions.
|
||||
|
||||
@ -392,10 +392,10 @@
|
||||
-->
|
||||
<!-- 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.
|
||||
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)
|
||||
@ -415,7 +415,7 @@
|
||||
-->
|
||||
|
||||
</updateHandler>
|
||||
|
||||
|
||||
<!-- IndexReaderFactory
|
||||
|
||||
Use the following format to specify a custom IndexReaderFactory,
|
||||
@ -447,7 +447,7 @@
|
||||
be specified.
|
||||
-->
|
||||
<!--
|
||||
<indexReaderFactory name="IndexReaderFactory"
|
||||
<indexReaderFactory name="IndexReaderFactory"
|
||||
class="solr.StandardIndexReaderFactory">
|
||||
<int name="setTermIndexDivisor">12</int>
|
||||
</indexReaderFactory >
|
||||
@ -463,12 +463,12 @@
|
||||
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.
|
||||
|
||||
|
||||
-->
|
||||
<maxBooleanClauses>1024</maxBooleanClauses>
|
||||
|
||||
@ -477,7 +477,7 @@
|
||||
|
||||
There are two implementations of cache available for Solr,
|
||||
LRUCache, based on a synchronized LinkedHashMap, and
|
||||
FastLRUCache, based on a ConcurrentHashMap.
|
||||
FastLRUCache, based on a ConcurrentHashMap.
|
||||
|
||||
FastLRUCache has faster gets and slower puts in single
|
||||
threaded operation and thus is generally faster than LRUCache
|
||||
@ -502,7 +502,7 @@
|
||||
initialSize - the initial capacity (number of entries) of
|
||||
the cache. (see java.util.HashMap)
|
||||
autowarmCount - the number of entries to prepopulate from
|
||||
and old cache.
|
||||
and old cache.
|
||||
-->
|
||||
<filterCache class="solr.FastLRUCache"
|
||||
size="512"
|
||||
@ -510,28 +510,28 @@
|
||||
autowarmCount="0"/>
|
||||
|
||||
<!-- Query Result Cache
|
||||
|
||||
|
||||
Caches results of searches - ordered lists of document ids
|
||||
(DocList) based on a query, a sort, and the range of documents requested.
|
||||
(DocList) based on a query, a sort, and the range of documents requested.
|
||||
-->
|
||||
<queryResultCache class="solr.LRUCache"
|
||||
size="512"
|
||||
initialSize="512"
|
||||
autowarmCount="0"/>
|
||||
|
||||
|
||||
<!-- Document Cache
|
||||
|
||||
Caches Lucene Document objects (the stored fields for each
|
||||
document). Since Lucene internal document ids are transient,
|
||||
this cache will not be autowarmed.
|
||||
this cache will not be autowarmed.
|
||||
-->
|
||||
<documentCache class="solr.LRUCache"
|
||||
size="512"
|
||||
initialSize="512"
|
||||
autowarmCount="0"/>
|
||||
|
||||
|
||||
<!-- Field Value Cache
|
||||
|
||||
|
||||
Cache used to hold field values that are quickly accessible
|
||||
by document id. The fieldValueCache is created by default
|
||||
even if not configured here.
|
||||
@ -549,8 +549,8 @@
|
||||
name through SolrIndexSearcher.getCache(),cacheLookup(), and
|
||||
cacheInsert(). The purpose is to enable easy caching of
|
||||
user/application level data. The regenerator argument should
|
||||
be specified as an implementation of solr.CacheRegenerator
|
||||
if autowarming is desired.
|
||||
be specified as an implementation of solr.CacheRegenerator
|
||||
if autowarming is desired.
|
||||
-->
|
||||
<!--
|
||||
<cache name="myUserCache"
|
||||
@ -597,12 +597,12 @@
|
||||
are collected. For example, if a search for a particular query
|
||||
requests matching documents 10 through 19, and queryWindowSize is 50,
|
||||
then documents 0 through 49 will be collected and cached. Any further
|
||||
requests in that range can be satisfied via the cache.
|
||||
requests in that range can be satisfied via the cache.
|
||||
-->
|
||||
<queryResultWindowSize>20</queryResultWindowSize>
|
||||
|
||||
<!-- Maximum number of documents to cache for any entry in the
|
||||
queryResultCache.
|
||||
queryResultCache.
|
||||
-->
|
||||
<queryResultMaxDocsCached>200</queryResultMaxDocsCached>
|
||||
|
||||
@ -620,10 +620,10 @@
|
||||
prepared but there is no current registered searcher to handle
|
||||
requests or to gain autowarming data from.
|
||||
|
||||
|
||||
|
||||
-->
|
||||
<!-- QuerySenderListener takes an array of NamedList and executes a
|
||||
local query request for each NamedList in sequence.
|
||||
local query request for each NamedList in sequence.
|
||||
-->
|
||||
<listener event="newSearcher" class="solr.QuerySenderListener">
|
||||
<arr name="queries">
|
||||
@ -651,7 +651,7 @@
|
||||
<useColdSearcher>false</useColdSearcher>
|
||||
|
||||
<!-- Max Warming Searchers
|
||||
|
||||
|
||||
Maximum number of searchers that may be warming in the
|
||||
background concurrently. An error is returned if this limit
|
||||
is exceeded.
|
||||
@ -673,7 +673,7 @@
|
||||
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
|
||||
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
|
||||
@ -695,26 +695,26 @@
|
||||
|
||||
multipartUploadLimitInKB - specifies the max size (in KiB) of
|
||||
Multipart File Uploads that Solr will allow in a Request.
|
||||
|
||||
|
||||
formdataUploadLimitInKB - specifies the max size (in KiB) of
|
||||
form data (application/x-www-form-urlencoded) sent via
|
||||
POST. You can use POST to pass request parameters not
|
||||
fitting into the URL.
|
||||
|
||||
|
||||
addHttpRequestToContext - if set to true, it will instruct
|
||||
the requestParsers to include the original HttpServletRequest
|
||||
object in the context map of the SolrQueryRequest under the
|
||||
object in the context map of the SolrQueryRequest under the
|
||||
key "httpRequest". It will not be used by any of the existing
|
||||
Solr components, but may be useful when developing custom
|
||||
Solr components, but may be useful when developing custom
|
||||
plugins.
|
||||
|
||||
|
||||
*** WARNING ***
|
||||
The settings below authorize Solr to fetch remote files, You
|
||||
should make sure your system has some authentication before
|
||||
using enableRemoteStreaming="true"
|
||||
|
||||
-->
|
||||
<requestParsers enableRemoteStreaming="true"
|
||||
-->
|
||||
<requestParsers enableRemoteStreaming="true"
|
||||
multipartUploadLimitInKB="2048000"
|
||||
formdataUploadLimitInKB="2048"
|
||||
addHttpRequestToContext="false"/>
|
||||
@ -730,21 +730,21 @@
|
||||
<!-- If you include a <cacheControl> directive, it will be used to
|
||||
generate a Cache-Control header (as well as an Expires header
|
||||
if the value contains "max-age=")
|
||||
|
||||
|
||||
By default, no Cache-Control header is generated.
|
||||
|
||||
|
||||
You can use the <cacheControl> option even if you have set
|
||||
never304="true"
|
||||
-->
|
||||
<!--
|
||||
<httpCaching never304="true" >
|
||||
<cacheControl>max-age=30, public</cacheControl>
|
||||
<cacheControl>max-age=30, public</cacheControl>
|
||||
</httpCaching>
|
||||
-->
|
||||
<!-- To enable Solr to respond with automatically generated HTTP
|
||||
Caching headers, and to response to Cache Validation requests
|
||||
correctly, set the value of never304="false"
|
||||
|
||||
|
||||
This will cause Solr to generate Last-Modified and ETag
|
||||
headers based on the properties of the Index.
|
||||
|
||||
@ -769,12 +769,12 @@
|
||||
<!--
|
||||
<httpCaching lastModifiedFrom="openTime"
|
||||
etagSeed="Solr">
|
||||
<cacheControl>max-age=30, public</cacheControl>
|
||||
<cacheControl>max-age=30, public</cacheControl>
|
||||
</httpCaching>
|
||||
-->
|
||||
</requestDispatcher>
|
||||
|
||||
<!-- Request Handlers
|
||||
<!-- Request Handlers
|
||||
|
||||
http://wiki.apache.org/solr/SolrRequestHandler
|
||||
|
||||
@ -863,7 +863,7 @@
|
||||
<str>nameOfCustomComponent2</str>
|
||||
</arr>
|
||||
-->
|
||||
|
||||
|
||||
<arr name="last-components">
|
||||
<str>spellcheck</str>
|
||||
</arr>
|
||||
@ -990,8 +990,8 @@
|
||||
</requestHandler>
|
||||
|
||||
|
||||
<!-- Update Request Handler.
|
||||
|
||||
<!-- Update Request Handler.
|
||||
|
||||
http://wiki.apache.org/solr/UpdateXmlMessages
|
||||
|
||||
The canonical Request Handler for Modifying the Index through
|
||||
@ -1000,11 +1000,11 @@
|
||||
Note: Since solr1.1 requestHandlers requires a valid content
|
||||
type header if posted in the body. For example, curl now
|
||||
requires: -H 'Content-type:text/xml; charset=utf-8'
|
||||
|
||||
To override the request content type and force a specific
|
||||
Content-type, use the request parameter:
|
||||
|
||||
To override the request content type and force a specific
|
||||
Content-type, use the request parameter:
|
||||
?update.contentType=text/csv
|
||||
|
||||
|
||||
This handler will pick a response format to match the input
|
||||
if the 'wt' parameter is not explicit
|
||||
-->
|
||||
@ -1034,10 +1034,10 @@
|
||||
|
||||
<!-- Solr Cell Update Request Handler
|
||||
|
||||
http://wiki.apache.org/solr/ExtractingRequestHandler
|
||||
http://wiki.apache.org/solr/ExtractingRequestHandler
|
||||
|
||||
-->
|
||||
<requestHandler name="/update/extract"
|
||||
<requestHandler name="/update/extract"
|
||||
startup="lazy"
|
||||
class="solr.extraction.ExtractingRequestHandler" >
|
||||
<lst name="defaults">
|
||||
@ -1070,7 +1070,7 @@
|
||||
field value analysis will be marked as "matched" for every
|
||||
token that is produces by the query analysis
|
||||
-->
|
||||
<requestHandler name="/analysis/field"
|
||||
<requestHandler name="/analysis/field"
|
||||
startup="lazy"
|
||||
class="solr.FieldAnalysisRequestHandler" />
|
||||
|
||||
@ -1103,18 +1103,18 @@
|
||||
request parameter that holds the query text to be analyzed. It
|
||||
also supports the "analysis.showmatch" parameter which when set to
|
||||
true, all field tokens that match the query tokens will be marked
|
||||
as a "match".
|
||||
as a "match".
|
||||
-->
|
||||
<requestHandler name="/analysis/document"
|
||||
class="solr.DocumentAnalysisRequestHandler"
|
||||
<requestHandler name="/analysis/document"
|
||||
class="solr.DocumentAnalysisRequestHandler"
|
||||
startup="lazy" />
|
||||
|
||||
<!-- Admin Handlers
|
||||
|
||||
Admin Handlers - This will register all the standard admin
|
||||
RequestHandlers.
|
||||
RequestHandlers.
|
||||
-->
|
||||
<requestHandler name="/admin/"
|
||||
<requestHandler name="/admin/"
|
||||
class="solr.admin.AdminHandlers" />
|
||||
<!-- This single handler is equivalent to the following... -->
|
||||
<!--
|
||||
@ -1126,14 +1126,14 @@
|
||||
<requestHandler name="/admin/file" class="solr.admin.ShowFileRequestHandler" >
|
||||
-->
|
||||
<!-- If you wish to hide files under ${solr.home}/conf, explicitly
|
||||
register the ShowFileRequestHandler using:
|
||||
register the ShowFileRequestHandler using:
|
||||
-->
|
||||
<!--
|
||||
<requestHandler name="/admin/file"
|
||||
<requestHandler name="/admin/file"
|
||||
class="solr.admin.ShowFileRequestHandler" >
|
||||
<lst name="invariants">
|
||||
<str name="hidden">synonyms.txt</str>
|
||||
<str name="hidden">anotherfile.txt</str>
|
||||
<str name="hidden">synonyms.txt</str>
|
||||
<str name="hidden">anotherfile.txt</str>
|
||||
</lst>
|
||||
</requestHandler>
|
||||
-->
|
||||
@ -1146,10 +1146,10 @@
|
||||
<lst name="defaults">
|
||||
<str name="echoParams">all</str>
|
||||
</lst>
|
||||
<!-- An optional feature of the PingRequestHandler is to configure the
|
||||
handler with a "healthcheckFile" which can be used to enable/disable
|
||||
<!-- An optional feature of the PingRequestHandler is to configure the
|
||||
handler with a "healthcheckFile" which can be used to enable/disable
|
||||
the PingRequestHandler.
|
||||
relative paths are resolved against the data dir
|
||||
relative paths are resolved against the data dir
|
||||
-->
|
||||
<!-- <str name="healthcheckFile">server-enabled.txt</str> -->
|
||||
</requestHandler>
|
||||
@ -1157,29 +1157,29 @@
|
||||
<!-- Echo the request contents back to the client -->
|
||||
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
|
||||
<lst name="defaults">
|
||||
<str name="echoParams">explicit</str>
|
||||
<str name="echoParams">explicit</str>
|
||||
<str name="echoHandler">true</str>
|
||||
</lst>
|
||||
</requestHandler>
|
||||
|
||||
|
||||
<!-- Solr Replication
|
||||
|
||||
The SolrReplicationHandler supports replicating indexes from a
|
||||
"master" used for indexing and "slaves" used for queries.
|
||||
|
||||
http://wiki.apache.org/solr/SolrReplication
|
||||
http://wiki.apache.org/solr/SolrReplication
|
||||
|
||||
It is also necessary for SolrCloud to function (in Cloud mode, the
|
||||
replication handler is used to bulk transfer segments when nodes
|
||||
replication handler is used to bulk transfer segments when nodes
|
||||
are added or need to recover).
|
||||
|
||||
https://wiki.apache.org/solr/SolrCloud/
|
||||
-->
|
||||
<requestHandler name="/replication" class="solr.ReplicationHandler" >
|
||||
<requestHandler name="/replication" class="solr.ReplicationHandler" >
|
||||
<!--
|
||||
To enable simple master/slave replication, uncomment one of the
|
||||
To enable simple master/slave replication, uncomment one of the
|
||||
sections below, depending on whether this solr instance should be
|
||||
the "master" or a "slave". If this instance is a "slave" you will
|
||||
the "master" or a "slave". If this instance is a "slave" you will
|
||||
also need to fill in the masterUrl to point to a real machine.
|
||||
-->
|
||||
<!--
|
||||
@ -1199,18 +1199,18 @@
|
||||
|
||||
<!-- Search Components
|
||||
|
||||
Search components are registered to SolrCore and used by
|
||||
Search components are registered to SolrCore and used by
|
||||
instances of SearchHandler (which can access them by name)
|
||||
|
||||
|
||||
By default, the following components are available:
|
||||
|
||||
|
||||
<searchComponent name="query" class="solr.QueryComponent" />
|
||||
<searchComponent name="facet" class="solr.FacetComponent" />
|
||||
<searchComponent name="mlt" class="solr.MoreLikeThisComponent" />
|
||||
<searchComponent name="highlight" class="solr.HighlightComponent" />
|
||||
<searchComponent name="stats" class="solr.StatsComponent" />
|
||||
<searchComponent name="debug" class="solr.DebugComponent" />
|
||||
|
||||
|
||||
Default configuration in a requestHandler would look like:
|
||||
|
||||
<arr name="components">
|
||||
@ -1222,28 +1222,28 @@
|
||||
<str>debug</str>
|
||||
</arr>
|
||||
|
||||
If you register a searchComponent to one of the standard names,
|
||||
If you register a searchComponent to one of the standard names,
|
||||
that will be used instead of the default.
|
||||
|
||||
To insert components before or after the 'standard' components, use:
|
||||
|
||||
|
||||
<arr name="first-components">
|
||||
<str>myFirstComponentName</str>
|
||||
</arr>
|
||||
|
||||
|
||||
<arr name="last-components">
|
||||
<str>myLastComponentName</str>
|
||||
</arr>
|
||||
|
||||
NOTE: The component registered with the name "debug" will
|
||||
always be executed after the "last-components"
|
||||
|
||||
always be executed after the "last-components"
|
||||
|
||||
-->
|
||||
|
||||
|
||||
<!-- Spell Check
|
||||
|
||||
The spell check component can return a list of alternative spelling
|
||||
suggestions.
|
||||
suggestions.
|
||||
|
||||
http://wiki.apache.org/solr/SpellCheckComponent
|
||||
-->
|
||||
@ -1302,11 +1302,11 @@
|
||||
<float name="thresholdTokenFrequency">.01</float>
|
||||
-->
|
||||
</lst>
|
||||
|
||||
|
||||
<!-- a spellchecker that can break or combine words. See "/spell" handler below for usage -->
|
||||
<lst name="spellchecker">
|
||||
<str name="name">wordbreak</str>
|
||||
<str name="classname">solr.WordBreakSolrSpellChecker</str>
|
||||
<str name="classname">solr.WordBreakSolrSpellChecker</str>
|
||||
<str name="field">_text</str>
|
||||
<str name="combineWords">true</str>
|
||||
<str name="breakWords">true</str>
|
||||
@ -1325,7 +1325,7 @@
|
||||
</lst>
|
||||
-->
|
||||
|
||||
<!-- a spellchecker that use an alternate comparator
|
||||
<!-- a spellchecker that use an alternate comparator
|
||||
|
||||
comparatorClass be one of:
|
||||
1. score (default)
|
||||
@ -1352,7 +1352,7 @@
|
||||
-->
|
||||
</searchComponent>
|
||||
|
||||
<!-- A request handler for demonstrating the spellcheck component.
|
||||
<!-- A request handler for demonstrating the spellcheck component.
|
||||
|
||||
NOTE: This is purely as an example. The whole purpose of the
|
||||
SpellCheckComponent is to hook it into the request handler that
|
||||
@ -1361,7 +1361,7 @@
|
||||
|
||||
IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS
|
||||
NOT WHAT YOU WANT FOR YOUR PRODUCTION SYSTEM!
|
||||
|
||||
|
||||
See http://wiki.apache.org/solr/SpellCheckComponent for details
|
||||
on the request parameters.
|
||||
-->
|
||||
@ -1375,14 +1375,14 @@
|
||||
<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.extendedResults">true</str>
|
||||
<str name="spellcheck.count">10</str>
|
||||
<str name="spellcheck.alternativeTermCount">5</str>
|
||||
<str name="spellcheck.maxResultsForSuggest">5</str>
|
||||
<str name="spellcheck.maxResultsForSuggest">5</str>
|
||||
<str name="spellcheck.collate">true</str>
|
||||
<str name="spellcheck.collateExtendedResults">true</str>
|
||||
<str name="spellcheck.collateExtendedResults">true</str>
|
||||
<str name="spellcheck.maxCollationTries">10</str>
|
||||
<str name="spellcheck.maxCollations">5</str>
|
||||
<str name="spellcheck.maxCollations">5</str>
|
||||
</lst>
|
||||
<arr name="last-components">
|
||||
<str>spellcheck</str>
|
||||
@ -1399,8 +1399,8 @@
|
||||
|
||||
This is purely as an example.
|
||||
|
||||
In reality you will likely want to add the component to your
|
||||
already specified request handlers.
|
||||
In reality you will likely want to add the component to your
|
||||
already specified request handlers.
|
||||
-->
|
||||
<requestHandler name="/tvrh" class="solr.SearchHandler" startup="lazy">
|
||||
<lst name="defaults">
|
||||
@ -1433,11 +1433,11 @@
|
||||
<!-- Class name of Carrot2 clustering algorithm.
|
||||
|
||||
Currently available algorithms are:
|
||||
|
||||
|
||||
* org.carrot2.clustering.lingo.LingoClusteringAlgorithm
|
||||
* org.carrot2.clustering.stc.STCClusteringAlgorithm
|
||||
* org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm
|
||||
|
||||
|
||||
See http://project.carrot2.org/algorithms.html for the
|
||||
algorithm's characteristics.
|
||||
-->
|
||||
@ -1484,8 +1484,8 @@
|
||||
|
||||
This is purely as an example.
|
||||
|
||||
In reality you will likely want to add the component to your
|
||||
already specified request handlers.
|
||||
In reality you will likely want to add the component to your
|
||||
already specified request handlers.
|
||||
-->
|
||||
<requestHandler name="/clustering"
|
||||
startup="lazy"
|
||||
@ -1506,7 +1506,7 @@
|
||||
<!--<int name="carrot.numDescriptions">5</int>-->
|
||||
<!-- produce sub clusters -->
|
||||
<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
|
||||
@ -1514,12 +1514,12 @@
|
||||
<str name="q.alt">*:*</str>
|
||||
<str name="rows">10</str>
|
||||
<str name="fl">*,score</str>
|
||||
</lst>
|
||||
</lst>
|
||||
<arr name="last-components">
|
||||
<str>clustering</str>
|
||||
</arr>
|
||||
</requestHandler>
|
||||
|
||||
|
||||
<!-- Terms Component
|
||||
|
||||
http://wiki.apache.org/solr/TermsComponent
|
||||
@ -1534,7 +1534,7 @@
|
||||
<lst name="defaults">
|
||||
<bool name="terms">true</bool>
|
||||
<bool name="distrib">false</bool>
|
||||
</lst>
|
||||
</lst>
|
||||
<arr name="components">
|
||||
<str>terms</str>
|
||||
</arr>
|
||||
@ -1574,7 +1574,7 @@
|
||||
<highlighting>
|
||||
<!-- Configure the standard fragmenter -->
|
||||
<!-- This could most likely be commented out in the "default" case -->
|
||||
<fragmenter name="gap"
|
||||
<fragmenter name="gap"
|
||||
default="true"
|
||||
class="solr.highlight.GapFragmenter">
|
||||
<lst name="defaults">
|
||||
@ -1582,10 +1582,10 @@
|
||||
</lst>
|
||||
</fragmenter>
|
||||
|
||||
<!-- A regular-expression-based fragmenter
|
||||
(for sentence extraction)
|
||||
<!-- A regular-expression-based fragmenter
|
||||
(for sentence extraction)
|
||||
-->
|
||||
<fragmenter name="regex"
|
||||
<fragmenter name="regex"
|
||||
class="solr.highlight.RegexFragmenter">
|
||||
<lst name="defaults">
|
||||
<!-- slightly smaller fragsizes work better because of slop -->
|
||||
@ -1598,7 +1598,7 @@
|
||||
</fragmenter>
|
||||
|
||||
<!-- Configure the standard formatter -->
|
||||
<formatter name="html"
|
||||
<formatter name="html"
|
||||
default="true"
|
||||
class="solr.highlight.HtmlFormatter">
|
||||
<lst name="defaults">
|
||||
@ -1608,27 +1608,27 @@
|
||||
</formatter>
|
||||
|
||||
<!-- Configure the standard encoder -->
|
||||
<encoder name="html"
|
||||
<encoder name="html"
|
||||
class="solr.highlight.HtmlEncoder" />
|
||||
|
||||
<!-- Configure the standard fragListBuilder -->
|
||||
<fragListBuilder name="simple"
|
||||
<fragListBuilder name="simple"
|
||||
class="solr.highlight.SimpleFragListBuilder"/>
|
||||
|
||||
|
||||
<!-- Configure the single fragListBuilder -->
|
||||
<fragListBuilder name="single"
|
||||
<fragListBuilder name="single"
|
||||
class="solr.highlight.SingleFragListBuilder"/>
|
||||
|
||||
|
||||
<!-- Configure the weighted fragListBuilder -->
|
||||
<fragListBuilder name="weighted"
|
||||
<fragListBuilder name="weighted"
|
||||
default="true"
|
||||
class="solr.highlight.WeightedFragListBuilder"/>
|
||||
|
||||
|
||||
<!-- default tag FragmentsBuilder -->
|
||||
<fragmentsBuilder name="default"
|
||||
<fragmentsBuilder name="default"
|
||||
default="true"
|
||||
class="solr.highlight.ScoreOrderFragmentsBuilder">
|
||||
<!--
|
||||
<!--
|
||||
<lst name="defaults">
|
||||
<str name="hl.multiValuedSeparatorChar">/</str>
|
||||
</lst>
|
||||
@ -1636,7 +1636,7 @@
|
||||
</fragmentsBuilder>
|
||||
|
||||
<!-- multi-colored tag FragmentsBuilder -->
|
||||
<fragmentsBuilder name="colored"
|
||||
<fragmentsBuilder name="colored"
|
||||
class="solr.highlight.ScoreOrderFragmentsBuilder">
|
||||
<lst name="defaults">
|
||||
<str name="hl.tag.pre"><![CDATA[
|
||||
@ -1648,8 +1648,8 @@
|
||||
<str name="hl.tag.post"><![CDATA[</b>]]></str>
|
||||
</lst>
|
||||
</fragmentsBuilder>
|
||||
|
||||
<boundaryScanner name="default"
|
||||
|
||||
<boundaryScanner name="default"
|
||||
default="true"
|
||||
class="solr.highlight.SimpleBoundaryScanner">
|
||||
<lst name="defaults">
|
||||
@ -1657,8 +1657,8 @@
|
||||
<str name="hl.bs.chars">.,!? 	 </str>
|
||||
</lst>
|
||||
</boundaryScanner>
|
||||
|
||||
<boundaryScanner name="breakIterator"
|
||||
|
||||
<boundaryScanner name="breakIterator"
|
||||
class="solr.highlight.BreakIteratorBoundaryScanner">
|
||||
<lst name="defaults">
|
||||
<!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->
|
||||
@ -1680,15 +1680,15 @@
|
||||
|
||||
http://wiki.apache.org/solr/UpdateRequestProcessor
|
||||
|
||||
-->
|
||||
-->
|
||||
<!-- Deduplication
|
||||
|
||||
An example dedup update processor that creates the "id" field
|
||||
on the fly based on the hash code of some other fields. This
|
||||
example has overwriteDupes set to false since we are using the
|
||||
id field as the signatureField and Solr will maintain
|
||||
uniqueness based on that anyway.
|
||||
|
||||
uniqueness based on that anyway.
|
||||
|
||||
-->
|
||||
<!--
|
||||
<updateRequestProcessorChain name="dedupe">
|
||||
@ -1703,7 +1703,7 @@
|
||||
<processor class="solr.RunUpdateProcessorFactory" />
|
||||
</updateRequestProcessorChain>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Language identification
|
||||
|
||||
This example update chain identifies the language of the incoming
|
||||
@ -1743,7 +1743,7 @@
|
||||
<processor class="solr.RunUpdateProcessorFactory" />
|
||||
</updateRequestProcessorChain>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Response Writers
|
||||
|
||||
http://wiki.apache.org/solr/QueryResponseWriter
|
||||
@ -1759,7 +1759,7 @@
|
||||
overridden...
|
||||
-->
|
||||
<!--
|
||||
<queryResponseWriter name="xml"
|
||||
<queryResponseWriter name="xml"
|
||||
default="true"
|
||||
class="solr.XMLResponseWriter" />
|
||||
<queryResponseWriter name="json" class="solr.JSONResponseWriter"/>
|
||||
@ -1778,16 +1778,16 @@
|
||||
-->
|
||||
<str name="content-type">text/plain; charset=UTF-8</str>
|
||||
</queryResponseWriter>
|
||||
|
||||
|
||||
<!--
|
||||
Custom response writers can be declared as needed...
|
||||
-->
|
||||
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"/>
|
||||
|
||||
|
||||
|
||||
<!-- XSLT response writer transforms the XML output by any xslt file found
|
||||
in Solr's conf/xslt directory. Changes to xslt files are checked for
|
||||
every xsltCacheLifetimeSeconds.
|
||||
every xsltCacheLifetimeSeconds.
|
||||
-->
|
||||
<queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
|
||||
<int name="xsltCacheLifetimeSeconds">5</int>
|
||||
@ -1815,11 +1815,11 @@
|
||||
-->
|
||||
<!-- example of registering a custom function parser -->
|
||||
<!--
|
||||
<valueSourceParser name="myfunc"
|
||||
<valueSourceParser name="myfunc"
|
||||
class="com.mycompany.MyValueSourceParser" />
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Document Transformers
|
||||
http://wiki.apache.org/solr/DocTransformers
|
||||
-->
|
||||
@ -1828,12 +1828,12 @@
|
||||
<transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
|
||||
<int name="connection">jdbc://....</int>
|
||||
</transformer>
|
||||
|
||||
|
||||
To add a constant value to all docs, use:
|
||||
<transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
|
||||
<int name="value">5</int>
|
||||
</transformer>
|
||||
|
||||
|
||||
If you want the user to still be able to change it with _value:something_ use this:
|
||||
<transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
|
||||
<double name="defaultValue">5</double>
|
||||
@ -1843,7 +1843,7 @@
|
||||
EditorialMarkerFactory will do exactly that:
|
||||
<transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<!-- Legacy config for the admin interface -->
|
||||
<admin>
|
||||
|
@ -1,13 +1,26 @@
|
||||
# Troubleshooting
|
||||
|
||||
## Newly indexed content only shows in searches after a delay
|
||||
|
||||
First, check how you're running index operations.
|
||||
In many cases where the `queuedjobs` module is installed,
|
||||
saving or publishing a record will create a new index job which needs to complete first.
|
||||
Solr also distinguishes between adding documents to the indexing,
|
||||
committing them, and making them available to new searches.
|
||||
In most cases this happens within a few seconds, but
|
||||
in sometimes it can take up to a minute due to the
|
||||
`autoSoftCommit` configuration setting defaults in your `solrconfig.xml`.
|
||||
To find out more detail, read about
|
||||
[soft vs. hard commits](https://lucidworks.com/post/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/).
|
||||
|
||||
## Common gotchas
|
||||
|
||||
* By default number-letter boundaries are treated as a word boundary. For example, `A1` is two words - `a` and `1` - when Solr parses the search term.
|
||||
* Special characters and operators are not correctly escaped
|
||||
* Multi-word synonym issues
|
||||
* When Dolr indexes are reconfigured and reindexed, their content is trashed and rebuilt
|
||||
* When Solr indexes are reconfigured and reindexed, their content is trashed and rebuilt
|
||||
|
||||
### CWP-specific
|
||||
## CWP-specific
|
||||
|
||||
* `solrconfig.xml` customisations fail silently
|
||||
* Developers aren’t able to test raw queries or see output via the
|
||||
|
Loading…
Reference in New Issue
Block a user