solrconfig.xml

solrconfig.xml is usually the second file you configure when setting up a new Solr installation, after schema.xml.

The more commonly-used elements in solrconfig.xml are:

Data directory



${solr.data.dir:./solr/data}

Query cache parameters


    <!-- There are two implementations of cache available for Solr,
         LRUCache, based on a synchronized LinkedHashMap, and
         FastLRUCache, based on a ConcurrentHashMap.  FastLRUCache has faster gets
         and slower puts in single threaded operation and thus is generally faster
         than LRUCache when the hit ratio of the cache is high (> 75%), and may be
         faster under other scenarios on multi-cpu systems. -->
    <!-- Cache used by SolrIndexSearcher for filters (DocSets),
         unordered sets of *all* documents that match a query.
         When a new searcher is opened, its caches may be prepopulated
         or "autowarmed" using data from caches in the old searcher.
         autowarmCount is the number of items to prepopulate.  For LRUCache,
         the autowarmed items will be the most recently accessed items.
       Parameters:
         class - the SolrCache implementation LRUCache or FastLRUCache
         size - the maximum number of entries in the cache
         initialSize - the initial capacity (number of entries) of
           the cache.  (seel java.util.HashMap)
         autowarmCount - the number of entries to prepopulate from
           and old cache.
         -->
    <filterCache
      class="solr.FastLRUCache"
      size="512"
      initialSize="512"
      autowarmCount="0"/>

    <!-- Cache used to hold field values that are quickly accessible
         by document id.  The fieldValueCache is created by default
         even if not configured here.
      <fieldValueCache
        class="solr.FastLRUCache"
        size="512"
        autowarmCount="128"
        showItems="32"
      />
    -->

   <!-- queryResultCache caches results of searches - ordered lists of
         document ids (DocList) based on a query, a sort, and the range
         of documents requested.  -->
    <queryResultCache
      class="solr.LRUCache"
      size="512"
      initialSize="512"
      autowarmCount="0"/>

  <!-- documentCache caches Lucene Document objects (the stored fields for each document).
       Since Lucene internal document ids are transient, this cache will not be autowarmed.  -->
    <documentCache
      class="solr.LRUCache"
      size="512"
      initialSize="512"
      autowarmCount="0"/>

Request handlers

Request handlers are responsble for accepting HTTP requests, performing searches, then returning the results.

The default request handler that comes configured with the example webapp, also known as the standard request handler, looks like this:


<requestHandler name="standard" class="solr.SearchHandler" default="true">
   <lst name="defaults">
     <str name="echoParams">explicit</str>
     <!--
     <int name="rows">10</int>
     <str name="fl">*</str>
     <str name="version">2.1</str>
      -->
   </lst>
</requestHandler>

Every request handler has a configurable list of search components which performs the actual searching.

Default configuration in a requestHandler would look like:


<arr name="components">
  <str>query</str>
  <str>facet</str>
  <str>mlt</str>
  <str>highlight</str>
  <str>stats</str>
  <str>debug</str>
</arr>

These are described in the following section.

Search components

Search components extend the abstract class SearchComponent and are responsible for performing the actual searches.

By default, the following components are available:


<searchComponent name="query"     class="org.apache.solr.handler.component.QueryComponent" />
<searchComponent name="facet"     class="org.apache.solr.handler.component.FacetComponent" />
<searchComponent name="mlt"       class="org.apache.solr.handler.component.MoreLikeThisComponent" />
<searchComponent name="highlight" class="org.apache.solr.handler.component.HighlightComponent" />
<searchComponent name="stats"     class="org.apache.solr.handler.component.StatsComponent" />
<searchComponent name="debug"     class="org.apache.solr.handler.component.DebugComponent" />

Custom SearchComponents

Custom SearchComponents can be developed and added to solrconfig.xml. Note that these then have to be declared in a request handler's components stack to be actually used in a request.

There are 4 ways of doing this:

  1. Registering a custom SearchComponent under one of the 'standard' names, e.g. query
  2. Inserting before the 'standard' components.
    
    <arr name="first-components">
      <str>myFirstComponentName</str>
    </arr>
  3. Inserting after the 'standard' components.
    
    <arr name="last-components">
      <str>myFirstComponentName</str>
    </arr>
  4. Redeclaring components:
    
    <arr name="components">
      <str>query</str>
      <str>myFirstComponentName</str>
    </arr>


Note: We've only covered the most commonly-used configuration elements. The Solr Wiki has an extensive list of config elements in solrconfig.xml.