您的位置:首页 > Web前端

solr注意事项-solrconfig中的默认搜索域会覆盖schema中的默认搜索域,注意copyfeild中被corp的字段搜索

2014-07-04 17:12 267 查看
结论一:solrconfig.xml的默认搜索配置权限高于schema.xml中的默认搜索配置!

配置1:solrconfig.xml文件中关于select的配置:

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

    <!-- default values for query parameters can be specified, these

         will be overridden by parameters in the request

      -->

     <lst name="defaults">

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

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

       <str name="df">text</str>//默认搜索字段为text;

     </lst>
    </requestHandler>

配置2:schema.xml中的默认搜索配置为:  <defaultSearchField>title</defaultSearchField>//默认搜索字段为title

 <field name="title" type="text_mmseg" indexed="true" stored="true" multiValued="false"/>

 <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
 <copyField source="title" dest="text"/>

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">

      <analyzer type="index">

        <tokenizer class="solr.StandardTokenizerFactory"/>
         </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
         </analyzer>
    </fieldType>

其中,title的分析器是mmseg4j,text是copyfeil,分析器为StandardTokenizerFactory

--------------------------------------------------以上配置引发的超级无敌宇宙囧的问题!-----------------------------------------------------------------------

导致我花费了九牛二虎之力解决了这个很二很巧合的脑残问题:搜索title域的查询串,被解析为text域parsedQuery。巧合的是text是title的copyfeild,两个feild上的内容是一样的,只是解析方式不同!!

检索导致的问题是:




“黄海波视频”搜索后,debugQuery模式:parsedQuery一个是text; 另一个是title; 两个同样schema的core的搜索下,结果不同!!!!!!!!!!!!

结论二:有copyfeild时候,正巧搜索的是被copy的feild内容:当你用空格搜索的时候会被解析成这样:比如:title:黄海波  视频-----》(title:黄海波  title 海波)+text:视+text:频。竟然把空格后面的内容自动有copyfeild的分析器解析。。!!!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  solr solr solrj 搜索