<?xml version=“1.0” encoding=“UTF-8” ?> <config>

<!-- NOTE: various comments and unused configuration possibilities have been purged
   from this file.  Please refer to http://wiki.apache.org/solr/SolrConfigXml,
   as well as the default solrconfig file included with Solr -->

<abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>

<luceneMatchVersion>LUCENE_40</luceneMatchVersion>

<directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>

<!-- solr lib dirs -->
<lib dir="../lib/contrib/analysis-extras/lib" />
<lib dir="../lib/contrib/analysis-extras/lucene-libs" />
<!-- for full-text indexing -->
<lib dir="../lib/contrib/extraction/lib" regex=".*\.jar" />

<dataDir>${solr.data.dir:}</dataDir>

<!-- The default high-performance update handler -->
<updateHandler class="solr.DirectUpdateHandler2">

  <!-- Enables a transaction log, used for real-time get, durability, and
       and solr cloud replica recovery.  The log can grow as big as
       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.  -->
  <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.
       http://wiki.apache.org/solr/UpdateXmlMessages
       maxDocs - Maximum number of documents to add since the last
                 commit before automatically triggering a new commit.
       maxTime - Maximum amount of time in ms that is allowed to pass
                 since a document was added before automatically
                 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.
       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>

  <!-- softAutoCommit is like autoCommit except it causes a
       'soft' commit which only ensures that changes are visible
       but does not ensure that data is synced to disk.  This is
       faster and more near-realtime friendly than a hard commit.
    -->

   <autoSoftCommit>
     <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>
   </autoSoftCommit>

</updateHandler>

<requestHandler name="search" class="solr.SearchHandler" default="true">
  <!-- default values for query parameters can be specified, these
       will be overridden by parameters in the request
    -->
   <lst name="defaults">
     <str name="defType">edismax</str>
     <str name="echoParams">explicit</str>
     <str name="q.alt">*:*</str>
     <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
     <int name="qs">1</int>
     <int name="ps">2</int>
     <float name="tie">0.01</float>
     <!-- this qf and pf are used by default, if not otherwise specified by
          client. The default blacklight_config will use these for the
          "keywords" search. See the author_qf/author_pf, title_qf, etc
          below, which the default blacklight_config will specify for
          those searches. You may also be interested in:
          http://wiki.apache.org/solr/LocalParams
     -->
      <str name="qf">
        id
        all_text_timv
        active_fedora_model_ssi
        object_type_si
      </str>
      <str name="pf">
        all_text_timv^10
      </str>

     <str name="author_qf">
     </str>
     <str name="author_pf">
     </str>
     <str name="title_qf">
     </str>
     <str name="title_pf">
     </str>
     <str name="subject_qf">
     </str>
     <str name="subject_pf">
     </str>

     <str name="fl">
       *,
       score
     </str>

     <str name="facet">true</str>
     <str name="facet.mincount">1</str>
     <str name="facet.limit">10</str>
     <str name="facet.field">active_fedora_model_ssi</str>
     <str name="facet.field">object_type_si</str>

     <str name="spellcheck">true</str>
     <str name="spellcheck.dictionary">default</str>
     <str name="spellcheck.onlyMorePopular">true</str>
     <str name="spellcheck.extendedResults">true</str>
     <str name="spellcheck.collate">false</str>
     <str name="spellcheck.count">5</str>

   </lst>
  <arr name="last-components">
    <str>spellcheck</str>
  </arr>
</requestHandler>

<requestHandler name="permissions" class="solr.SearchHandler" >
  <lst name="defaults">
    <str name="facet">off</str>
    <str name="echoParams">all</str>
    <str name="rows">1</str>
    <str name="q">{!raw f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
    <str name="fl">
      id,
      access_ssim,
      discover_access_group_ssim,discover_access_person_ssim,
      read_access_group_ssim,read_access_person_ssim,
      edit_access_group_ssim,edit_access_person_ssim,
      depositor_ti,
      embargo_release_date_dtsi
      inheritable_access_ssim,
      inheritable_discover_access_group_ssim,inheritable_discover_access_person_ssim,
      inheritable_read_access_group_ssim,inheritable_read_access_person_ssim,
      inheritable_edit_access_group_ssim,inheritable_edit_access_person_ssim,
      inheritable_embargo_release_date_dtsi
    </str>
  </lst>
</requestHandler>

<requestHandler name=“/update/extract” startup=“lazy” class=“org.apache.solr.handler.extraction.ExtractingRequestHandler” >

   <lst name="defaults">
     <!-- All the main content goes into "text"... if you need to return the extracted text or do highlighting, use a stored field. -->
     <str name="fmap.content">text</str>
     <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="standard" class="solr.SearchHandler">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <str name="defType">lucene</str>
    </lst>
 </requestHandler>

 <!-- for requests to get a single document; use id=666 instead of q=id:666 -->
 <requestHandler name="document" class="solr.SearchHandler" >
   <lst name="defaults">
     <str name="echoParams">all</str>
     <str name="fl">*</str>
     <str name="rows">1</str>
     <str name="q">{!raw f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
   </lst>
 </requestHandler>

 <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
   <str name="queryAnalyzerFieldType">textSpell</str>
   <!-- Multiple "Spell Checkers" can be declared and used by this component
     (e.g. for title_spell field)
     -->
   <lst name="spellchecker">
     <str name="name">default</str>
     <str name="field">spell</str>
     <str name="spellcheckIndexDir">./spell</str>
     <str name="buildOnOptimize">true</str>
   </lst>
 </searchComponent>

 <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />

 <requestDispatcher handleSelect="true" >
   <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048" />
 </requestDispatcher>

 <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
 <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
 <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />

 <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>

 <!-- config for the admin interface -->
 <admin>
   <defaultQuery>search</defaultQuery>
 </admin>

</config>