solr注意事项-solrconfig中的默认搜索域会覆盖schema中的默认搜索域,注意copyfeild中被corp的字段搜索
结论一:solrconfig.xml的默认搜索配置权限高于schema.xml中的默认搜索配置!
配置1:solrconfig.xml文件中关于select的配置:
<requestHandler name="/select" class="solr.SearchHandler">
<!-- default values for query parameters can be specified, thesewill 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的分析器解析。。!!!