psu-libraries/psulib_blacklight

View on GitHub
solr/conf/solrconfig.xml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8" ?>
<config>

  <valueSourceParser name="stringdiff"
    class="edu.psu.solr.plugin.bookcodesort.StringDiffValueSourceParser" />

  <!-- 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>8.11</luceneMatchVersion>

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

  <!-- solr lib dirs -->
  <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" />

  <!-- using default data directory here, for the vanilla Solr installation-->
  <dataDir>${solr.data.dir:}</dataDir>

  <codecFactory class="solr.SchemaCodecFactory"/>

  <schemaFactory class="ClassicIndexSchemaFactory"/>

  <indexConfig>
    <!-- native is the default, but let's be safe -->
    <lockType>${solr.lock.type:native}</lockType>

    <!-- in-memory buffer of 200MB per shard. If it fills up,
     a hard commit is done, but the transaction log isn't cleared up,
     so we still have to rely on the hard commit policy -->
    <ramBufferSizeMB>200</ramBufferSizeMB>
  </indexConfig>

  <updateHandler class="solr.DirectUpdateHandler2">

    <!-- this is our transaction log for SolrCloud-->
    <updateLog>
      <str name="dir">${solr.ulog.dir:}</str>
      <int name="numVersionBuckets">${solr.ulog.numVersionBuckets:65536}</int>
    </updateLog>

    <!-- hard commit every 10 minutes or 100K docs, whichever comes first -->
    <autoCommit>
      <maxTime>600000</maxTime>
      <maxDocs>100000</maxDocs>
      <openSearcher>false</openSearcher>
    </autoCommit>

    <!-- soft commit every 20 minutes -->
    <autoSoftCommit>
      <maxTime>1200000</maxTime>
    </autoSoftCommit>

  </updateHandler>

  <updateProcessor class="solr.processor.SignatureUpdateProcessorFactory" name="add_hash_id">
    <bool name="enabled">true</bool>
    <str name="signatureField">hashed_id_si</str>
    <bool name="overwriteDupes">false</bool>
    <str name="fields">id</str>
    <str name="signatureClass">solr.processor.Lookup3Signature</str>
  </updateProcessor>

  <updateRequestProcessorChain name="cloud" processor="add_hash_id" default="true">
    <processor class="solr.LogUpdateProcessorFactory"/>
    <processor class="solr.DistributedUpdateProcessorFactory"/>
    <processor class="solr.RunUpdateProcessorFactory"/>
  </updateRequestProcessorChain>

  <!-- config for the admin interface -->
  <admin>
    <defaultQuery>*:*</defaultQuery>
  </admin>


  <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>
       <int name="rows">10</int>
       <str name="q.alt">*:*</str>
       <str name="mm">5&lt;-1 9&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 will use these for the
            "keywords" search. See the author_qf/author_pf, title_qf, etc
            below, which the default blacklight will specify for
            those searches. You may also be interested in:
            http://wiki.apache.org/solr/LocalParams
       -->
       <str name="qf">
         id
         title_unstem_search^150000
         title_245ab_unstem_search^100000
         title_tsim^50000
         cjk_title_search^50000
         title_245ab_tsim^25000
         cjk_title_245ab_search^25000
         title_addl_unstem_search^5000
         title_addl_tsim^2500
         cjk_title_addl_search^2500
         series_title_unstem_search^500
         series_title_tsim^200
         title_related_unstem_search^150
         title_related_tsim^125
         subject_topic_unstem_search^1000
         subject_unstem_search^750
         subject_topic_facet_sim^625
         subject_tsim^500
         author_unstem_search^250
         author_addl_unstem_search^250
         author_tsim^100
         cjk_author_search^100
         author_addl_tsim^50
         cjk_author_addl_search^50
         subject_addl_unstem_search^250
         subject_addl_tsim^50
         isbn_sim
         issn_sim
         scan_sim
         toc_ssim^200
         notes_summary_ssim
         all_text_timv
       </str>
       <str name="pf">
         title_unstem_search^1000000
         title_245ab_unstem_search^750000
         title_tsim^300000
         cjk_title_search^300000
         title_245ab_tsim^250000
         cjk_title_245ab_search^750000
         title_addl_unstem_search^50000
         title_addl_tsim^25000
         cjk_title_addl_search^25000
         series_title_unstem_search^20000
         series_title_tsim^10000
         title_related_unstem_search^1500
         title_related_tsim^1250
         subject_topic_unstem_search^10000
         subject_unstem_search^7500
         subject_topic_facet_sim^6250
         subject_tsim^5000
         author_unstem_search^2500
         author_addl_unstem_search^2500
         author_tsim^1000
         cjk_author_search^1000
         author_addl_tsim^500
         cjk_author_addl_search^500
         subject_addl_unstem_search^2500
         subject_addl_tsim^500
         toc_ssim^200
         notes_summary_ssim^50
         all_text_timv^10
       </str>
       <str name="author_qf">
         author_unstem_search^200
         author_addl_unstem_search^50
         author_tsim^20
         cjk_author_search^20
         author_addl_tsim
         cjk_author_addl_search
       </str>
       <str name="author_pf">
         author_unstem_search^2000
         author_addl_unstem_search^500
         author_tsim^200
         cjk_author_search^200
         author_addl_tsim^10
         cjk_author_addl_search^10
       </str>
       <str name="title_qf">
         title_unstem_search^75000
         title_245ab_unstem_search^50000
         title_addl_unstem_search^10000
         title_tsim^7500
         cjk_title_search^7500
         title_245ab_tsim^5000
         cjk_title_245ab_search^5000
         title_addl_tsim^100
         cjk_title_addl_search^100
         title_added_entry_unstem_search^50
         title_added_entry_tsim^10
         series_title_unstem_search^5
         series_title_tsim
       </str>
       <str name="title_pf">
         title_unstem_search^750000
         title_245ab_unstem_search^500000
         title_addl_unstem_search^100000
         title_tsim^75000
         cjk_title_search^7500
         title_245ab_tsim^50000
         cjk_title_245ab_searc
         title_addl_tsim^1000
         cjk_title_addl_search^1000
         title_added_entry_unstem_search^500
         title_added_entry_tsim^100
         series_title_unstem_search^50
         series_title_tsim^10
       </str>
       <str name="subject_qf">
         subject_topic_unstem_search^200
         subject_unstem_search^125
         subject_topic_facet_sim^100
         subject_tsim^50
         subject_addl_unstem_search^10
         subject_addl_tsim
       </str>
       <str name="subject_pf">
         subject_topic_unstem_search^2000
         subject_unstem_search^1250
         subject_tsim^1000
         subject_topic_facet_sim^500
         subject_addl_unstem_search^100
         subject_addl_tsim^10
       </str>

       <!-- for advanced search number text box -->
       <str name="number_qf">
         id
         isbn_sim
         issn_sim
         oclc_number_ssim
         deprecated_oclcs_tsim
         lccn_ssim
         scan_sim
         report_numbers_ssim
       </str>

       <!-- list fields to be displayed in the search results page -->
       <str name="fl">
         author_corp_display_ssm,
         author_meeting_display_ssm,
         author_person_display_ssm,
         call_number_lc_ssm,
         call_number_dewey_ssm,
         edition_display_ssm,
         format,
         full_links_struct,
         ht_access_ss
         id,
         isbn_valid_ssm,
         lccn_ssim,
         oclc_number_ssim,
         overall_imprint_display_ssm,
         publication_display_ssm,
         score,
         summary_holdings_struct,
         title_display_ssm,
         title_latin_display_ssm,
       </str>

       <!-- list fields to be displayed as facets -->
       <str name="facet">true</str>
       <str name="facet.mincount">1</str>
       <str name="facet.field">access_facet</str>
       <str name="facet.field">campus_facet</str>
       <str name="facet.field">format</str>
       <str name="facet.field">genre_facet</str>
       <str name="facet.field">language_facet</str>
       <str name="facet.field">lc_1letter_facet</str>
       <str name="facet.field">lc_rest_facet</str>
       <str name="facet.field">media_type_facet</str>
       <str name="facet.field">pub_date_itsi</str>
       <str name="facet.field">subject_topic_facet</str>
       <str name="facet.field">thesis_dept_facet</str>
       <str name="facet.field">up_library_facet</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">*,
        bound_with_title_ssm: [json]</str>
      <str name="rows">1</str>
      <str name="q">{!term f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
    </lst>
  </requestHandler>

  <!-- requests a set of documents for building a virtual shelf for call number browsing -->
  <requestHandler name="shelf" class="solr.SearchHandler" >
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <str name="fl">
        call_number_lc_ssm
        call_number_dewey_ssm
        keymap_struct
        author_person_display_ssm
        edition_display_ssm
        format
        id
        lc_shelfkey,
        dewey_shelfkey,
        library_facet
        overall_imprint_display_ssm
        publication_display_ssm
        title_display_ssm
      </str>
      <str name="defType">lucene</str>

      <!-- It's possible that there would be more items present than the maximum set here because a given shelf key
           can occur in more than one item. -->
      <str name="rows">100</str>
    </lst>
  </requestHandler>

  <requestHandler name="standard" class="solr.SearchHandler">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <str name="defType">lucene</str>
    </lst>
  </requestHandler>

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

  <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />

  <query>

    <filterCache class="solr.CaffeineCache"
                 size="2000"
                 initialSize="2000"
                 autowarmCount="100"/>

    <queryResultCache class="solr.CaffeineCache"
                      size="1000"
                      initialSize="1000"
                      autowarmCount="100"/>

    <documentCache class="solr.CaffeineCache"
                   size="1000"
                   initialSize="1000"/>

    <enableLazyFieldLoading>true</enableLazyFieldLoading>

    <queryResultWindowSize>100</queryResultWindowSize>
    <queryResultMaxDocsCached>500</queryResultMaxDocsCached>
    <useColdSearcher>false</useColdSearcher>
  </query>

</config>