您的位置:首页 > Web前端

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

2014-07-04 17:12 274 查看
结论一: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的分析器解析。。!!!

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