0
点赞
收藏
分享

微信扫一扫

solr使用教程六【面试+工作】


<!-- Max Warming Searchers


         Maximum number of searchers that may be warming in the

         background concurrently.  An error is returned if this limit

         is exceeded.


         Recommend values of 1-2 for read-only slaves, higher for

         masters w/o cache warming.

      -->

    <maxWarmingSearchers>2</maxWarmingSearchers>


  </query>


  <requestDispatcher handleSelect="false" >


    <requestParsers enableRemoteStreaming="true"

                    multipartUploadLimitInKB="2048000"

                    formdataUploadLimitInKB="2048"/>


    <httpCaching never304="true" />


  </requestDispatcher>


  <requestHandler name="/select" class="solr.SearchHandler">

      <lst name="defaults">

       <str name="echoParams">explicit</str>

       <int name="rows">10</int>

       <str name="df">text</str>

     </lst>


    </requestHandler>

  <requestHandler name="/query" class="solr.SearchHandler">

     <lst name="defaults">

       <str name="echoParams">explicit</str>

       <str name="wt">json</str>

       <str name="indent">true</str>

       <str name="df">text</str>

     </lst>

  </requestHandler>


  <requestHandler name="/get" class="solr.RealTimeGetHandler">

     <lst name="defaults">

       <str name="omitHeader">true</str>

       <str name="wt">json</str>

       <str name="indent">true</str>

     </lst>

  </requestHandler>


  <requestHandler name="/browse" class="solr.SearchHandler">

     <lst name="defaults">

       <str name="echoParams">explicit</str>


       <!-- VelocityResponseWriter settings -->

       <str name="wt">velocity</str>

       <str name="v.template">browse</str>

       <str name="v.layout">layout</str>

       <str name="title">Solritas</str>


       <!-- Query settings -->

       <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

          title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0

       </str>

       <str name="df">text</str>

       <str name="mm">100%</str>

       <str name="q.alt">*:*</str>

       <str name="rows">10</str>

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


       <str name="mlt.qf">

         text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4

         title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0

       </str>

       <str name="mlt.fl">text,features,name,sku,id,manu,cat,title,description,keywords,author,resourcename</str>

       <int name="mlt.count">3</int>


       <!-- Faceting defaults -->

       <str name="facet">on</str>

       <str name="facet.field">cat</str>

       <str name="facet.field">manu_exact</str>

       <str name="facet.field">content_type</str>

       <str name="facet.field">author_s</str>

       <str name="facet.query">ipod</str>

       <str name="facet.query">GB</str>

       <str name="facet.mincount">1</str>

       <str name="facet.pivot">cat,inStock</str>

       <str name="facet.range.other">after</str>

       <str name="facet.range">price</str>

       <int name="f.price.facet.range.start">0</int>

       <int name="f.price.facet.range.end">600</int>

       <int name="f.price.facet.range.gap">50</int>

       <str name="facet.range">popularity</str>

       <int name="f.popularity.facet.range.start">0</int>

       <int name="f.popularity.facet.range.end">10</int>

       <int name="f.popularity.facet.range.gap">3</int>

       <str name="facet.range">manufacturedate_dt</str>

       <str name="f.manufacturedate_dt.facet.range.start">NOW/YEAR-10YEARS</str>

       <str name="f.manufacturedate_dt.facet.range.end">NOW</str>

       <str name="f.manufacturedate_dt.facet.range.gap">+1YEAR</str>

       <str name="f.manufacturedate_dt.facet.range.other">before</str>

       <str name="f.manufacturedate_dt.facet.range.other">after</str>


       <!-- Highlighting defaults -->

       <str name="hl">on</str>

       <str name="hl.fl">content features title name</str>

       <str name="hl.encoder">html</str>

       <str name="hl.simple.pre">&lt;b&gt;</str>

       <str name="hl.simple.post">&lt;/b&gt;</str>

       <str name="f.title.hl.fragsize">0</str>

       <str name="f.title.hl.alternateField">title</str>

       <str name="f.name.hl.fragsize">0</str>

       <str name="f.name.hl.alternateField">name</str>

       <str name="f.content.hl.snippets">3</str>

       <str name="f.content.hl.fragsize">200</str>

       <str name="f.content.hl.alternateField">content</str>

       <str name="f.content.hl.maxAlternateFieldLength">750</str>


       <!-- Spell checking defaults -->

       <str name="spellcheck">on</str>

       <str name="spellcheck.extendedResults">false</str>      

       <str name="spellcheck.count">5</str>

       <str name="spellcheck.alternativeTermCount">2</str>

       <str name="spellcheck.maxResultsForSuggest">5</str>      

       <str name="spellcheck.collate">true</str>

       <str name="spellcheck.collateExtendedResults">true</str> 

       <str name="spellcheck.maxCollationTries">5</str>

                  class="solr.extraction.ExtractingRequestHandler" >

    <lst name="defaults">

      <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="/analysis/field"

                  startup="lazy"

                  class="solr.FieldAnalysisRequestHandler" />

  <requestHandler name="/analysis/document"

                  class="solr.DocumentAnalysisRequestHandler"

                  startup="lazy" />

  <requestHandler name="/admin/"

                  class="solr.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>


  <!-- 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="echoHandler">true</str>

    </lst>

  </requestHandler>


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


  </requestHandler>


<!-- spell -->

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">

     <lst name="spellchecker">

       <str name="name">direct</str>

       <str name="field">spell</str>

       <str name="classname">solr.DirectSolrSpellChecker</str>

       <str name="distanceMeasure">internal</str>

       <float name="accuracy">0.5</float>

       <int name="maxEdits">2</int>

       <int name="minPrefix">1</int>

       <int name="maxInspections">5</int>

       <int name="minQueryLength">2</int>

       <float name="maxQueryFrequency">0.001</float>

             <str name="buildOnCommit">true</str>

    </lst>


          <lst name="spellchecker">

      <!--

           Optional, it is required when more than one spellchecker is configured.

           Select non-default name with spellcheck.dictionary in request handler.

name是可选的,如果只有一个spellchecker可以不写name

如果有多个spellchecker,需要在Request Handler中指定spellcheck.dictionary

      -->

      <str name="name">default</str>

      <!-- The classname is optional, defaults to IndexBasedSpellChecker -->

      <str name="classname">solr.IndexBasedSpellChecker</str>

      <!--

               Load tokens from the following field for spell checking,

               analyzer for the field's type as defined in schema.xml are used

下面这个field名字指的是拼写检查的依据,也就是说要根据哪个Field来检查用户输入。

      -->

      <str name="field">spell</str>

      <!-- Optional, by default use in-memory index (RAMDirectory)

SpellCheck索引文件的存放位置,是可选的,如果不写默认使用内存模式RAMDirectory。

./spellchecker1指的是:corex\data\spellchecker1

-->

      <str name="spellcheckIndexDir">./spellchecker1</str>

      <!-- Set the accuracy (float) to be used for the suggestions. Default is 0.5 -->

      <str name="accuracy">0.7</str>

<!--何时创建拼写索引:buildOnCommit/buildOnOptimize -->

          <str name="buildOnCommit">true</str>

    </lst>

<!-- 另一个拼写检查器,使用JaroWinklerDistance距离算法 -->

         <lst name="spellchecker">

       <str name="name">jarowinkler</str>

       <str name="classname">solr.IndexBasedSpellChecker</str>

       <str name="field">spell</str>

       <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>

       <str name="spellcheckIndexDir">./spellchecker2</str>

       <str name="buildOnCommit">true</str>

    </lst>

<!-- 另一个拼写检查器,使用文件内容为检查依据

     <lst name="spellchecker">

       <str name="classname">solr.FileBasedSpellChecker</str>

       <str name="name">file</str>

       <str name="sourceLocation">spellings.txt</str>

       <str name="characterEncoding">UTF-8</str>

       <str name="spellcheckIndexDir">./spellcheckerFile</str>

       <str name="buildOnCommit">true</str>

     </lst>-->

<str name="queryAnalyzerFieldType">text_spell</str>

</searchComponent>

<queryConverter name="queryConverter" class="solr.SpellingQueryConverter"/>


<requestHandler name="/spell" class="solr.SearchHandler">

  <lst name="defaults">


    <str name="spellcheck.dictionary">default</str>

         <str name="spellcheck.collate">true</str>

    <str name="spellcheck.onlyMorePopular">true</str>

    <str name="spellcheck.extendedResults">false</str>

    <str name="spellcheck.count">10</str>

  </lst>

  <arr name="last-components">

    <str>spellcheck</str>

  </arr>

</requestHandler>


<searchComponent  name="suggest" class="solr.SpellCheckComponent">

    <str name="queryAnalyzerFieldType">string</str>

    <lst name="spellchecker">

        <str name="name">suggest</str>

        <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>

        <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>

        <str name="field">text</str>

        <float name="threshold">0.0001</float>

        <str name="comparatorClass">freq</str>

        <str name="buildOnOptimize">true</str>

        <!--<str name="buildOnCommit">true</str>-->

    </lst>

</searchComponent>

<requestHandler  name="/suggest" class="solr.SearchHandler" startup="lazy">

    <lst name="defaults">

        <str name="spellcheck">true</str>

        <str name="spellcheck.dictionary">suggest</str>

        <str name="spellcheck.onlyMorePopular">true</str>

                   <str name="spellcheck.extendedResults">false</str>

        <str name="spellcheck.count">10</str>

        <!--<str name="spellcheck.collate">true</str>-->

    </lst>

    <arr name="components">

            <str>suggest</str>

    </arr>

</requestHandler>

<requestHandler name="/mlt" class="solr.MoreLikeThisHandler">

</requestHandler>

  <searchComponent name="tvComponent" class="solr.TermVectorComponent"/>

  <requestHandler name="/tvrh" class="solr.SearchHandler" startup="lazy">

    <lst name="defaults">

      <str name="df">text</str>

      <bool name="tv">true</bool>

    </lst>

    <arr name="last-components">

      <str>tvComponent</str>

    </arr>

  </requestHandler>

  <searchComponent name="clustering"

                   enable="${solr.clustering.enabled:true}"

                   class="solr.clustering.ClusteringComponent" >

    <!-- Declare an engine -->

    <lst name="engine">

    <str name="name">default</str>

    <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>

    <!-- Engine-specific parameters -->

    <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>

   </lst>

  </searchComponent>

  <requestHandler name="/clustering"

                  startup="lazy"

                  enable="${solr.clustering.enabled:true}"

                  class="solr.SearchHandler">

   <lst name="defaults">

    <str name="echoParams">explicit</str>

    <bool name="clustering">true</bool>

    <str name="clustering.engine">default</str>

    <bool name="clustering.results">true</bool>

    <str name="carrot.title">category_s</str>

            <str name="carrot.snippet">content</str>

         <str name="carrot.produceSummary">true</str>

  </lst>

  <arr name="last-components">

    <str>clustering</str>

  </arr>

  </requestHandler>

  <searchComponent name="terms" class="solr.TermsComponent"/>

  <!-- A request handler for demonstrating the terms component -->

  <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">

     <lst name="defaults">

      <bool name="terms">true</bool>

      <bool name="distrib">false</bool>

    </lst>    

    <arr name="components">

      <str>terms</str>

    </arr>

  </requestHandler>

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

  <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">

    <lst name="defaults">

      <str name="echoParams">explicit</str>

      <str name="df">text</str>

    </lst>

    <arr name="last-components">

      <str>elevator</str>

    </arr>

  </requestHandler>

  <searchComponent class="solr.HighlightComponent" name="highlight">

    <highlighting>

      <!-- Configure the standard fragmenter -->

      <!-- This could most likely be commented out in the "default" case -->

      <fragmenter name="gap"

                  default="true"

                  class="solr.highlight.GapFragmenter">

        <lst name="defaults">

          <int name="hl.fragsize">100</int>

        </lst>

      </fragmenter>

      <!-- A regular-expression-based fragmenter

           (for sentence extraction)

        -->

      <fragmenter name="regex"

                  class="solr.highlight.RegexFragmenter">

        <lst name="defaults">

          <!-- slightly smaller fragsizes work better because of slop -->

          <int name="hl.fragsize">70</int>

          <!-- allow 50% slop on fragment sizes -->

          <float name="hl.regex.slop">0.5</float>

          <!-- a basic sentence pattern -->

          <str name="hl.regex.pattern">[-\w ,/\n\&quot;&apos;]{20,200}</str>

        </lst>

      </fragmenter>

      <!-- Configure the standard formatter -->

      <formatter name="html"

                 default="true"

                 class="solr.highlight.HtmlFormatter">

        <lst name="defaults">

          <str name="hl.simple.pre"><![CDATA[<em>]]></str>

          <str name="hl.simple.post"><![CDATA[</em>]]></str>

        </lst>

      </formatter>

      <!-- Configure the standard encoder -->

      <encoder name="html"

               class="solr.highlight.HtmlEncoder" />

      <!-- Configure the standard fragListBuilder -->

      <fragListBuilder name="simple"

                       class="solr.highlight.SimpleFragListBuilder"/>   

      <!-- Configure the single fragListBuilder -->

      <fragListBuilder name="single"

                       class="solr.highlight.SingleFragListBuilder"/>

      <!-- Configure the weighted fragListBuilder -->

      <fragListBuilder name="weighted"

                       default="true"

                       class="solr.highlight.WeightedFragListBuilder"/>

      <!-- default tag FragmentsBuilder -->

      <fragmentsBuilder name="default"

                        default="true"

                        class="solr.highlight.ScoreOrderFragmentsBuilder">

      </fragmentsBuilder>

      <!-- multi-colored tag FragmentsBuilder -->

      <fragmentsBuilder name="colored"

                        class="solr.highlight.ScoreOrderFragmentsBuilder">

        <lst name="defaults">

          <str name="hl.tag.pre"><![CDATA[

               <b style="background:yellow">,<b style="background:lawgreen">,

               <b style="background:aquamarine">,<b style="background:magenta">,

               <b style="background:palegreen">,<b style="background:coral">,

               <b style="background:wheat">,<b style="background:khaki">,

               <b style="background:lime">,<b style="background:deepskyblue">]]></str>

          <str name="hl.tag.post"><![CDATA[</b>]]></str>

        </lst>

      </fragmentsBuilder>

      <boundaryScanner name="default"

                       default="true"

                       class="solr.highlight.SimpleBoundaryScanner">

        <lst name="defaults">

          <str name="hl.bs.maxScan">10</str>

          <str name="hl.bs.chars">.,!? &#9;&#10;&#13;</str>

        </lst>

      </boundaryScanner>

      <boundaryScanner name="breakIterator"

                       class="solr.highlight.BreakIteratorBoundaryScanner">

        <lst name="defaults">

          <!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->

          <str name="hl.bs.type">WORD</str>

          <!-- language and country are used when constructing Locale object.  -->

          <!-- And the Locale object will be used when getting instance of BreakIterator -->

          <str name="hl.bs.language">en</str>

          <str name="hl.bs.country">US</str>

        </lst>

      </boundaryScanner>

    </highlighting>

  </searchComponent>

  <queryResponseWriter name="json" class="solr.JSONResponseWriter">

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

  <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">

    <int name="xsltCacheLifetimeSeconds">5</int>

  </queryResponseWriter>


  <admin>

    <defaultQuery>*:*</defaultQuery>

  </admin>

</config>


参考资料及文献

http://wiki.apache.org/solr/    所有的配置在这里都有说明,按需要配上就行了.

solr使用教程六【面试+工作】_solr


举报

相关推荐

0 条评论