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上的内容是一样的,只是解析方式不同!!
检索导致的问题是:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/f0bb3dbc62e89a3469f7e75bd73de5ec)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/2c6cea9ed5ffbb9416d1fd8f1fdfbe00)
“黄海波视频”搜索后,debugQuery模式:parsedQuery一个是text; 另一个是title; 两个同样schema的core的搜索下,结果不同!!!!!!!!!!!!
结论二:有copyfeild时候,正巧搜索的是被copy的feild内容:当你用空格搜索的时候会被解析成这样:比如:title:黄海波 视频-----》(title:黄海波 title 海波)+text:视+text:频。竟然把空格后面的内容自动有copyfeild的分析器解析。。!!!
配置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注意事项-solrconfig中的默认搜索域会覆盖schema中的默认搜索域,注意copyfeild中被corp的字段搜索
- solr4.0+IKAnalyzer 中文搜索,无法查询到结果的解决方法-【布尔逻辑和 空格后默认加默认搜索字段】
- 在oracle中字段类型LONG的使用注意事项
- 在oracle中字段类型LONG的使用注意事项
- Solr笔记(2)_Schema.xml和solrconfig.xml分析
- 利用SOLR搭建企业搜索平台之十二 (字段增加权重)
- 关于用myeclipse在struts-config.xml中配置datasource的注意事项
- 配置config.bib的注意事项以及错误分析
- Solr笔记(2)_Schema.xml和solrconfig.xml分析
- 配置config.bib的注意事项以及错误分析
- 使用SqlDependency监测SQL Server 2005/2008字段改动时的SQL语法及相关注意事项
- 在生产机中修改字段长度的注意事项
- 覆盖Thread的start()函数后的注意事项
- 在oracle中字段类型LONG的使用注意事项
- JDBC PreparedStatement 字符串字段 模糊查询 注意事项
- 对有自增长字段的表导入数据注意事项
- MySQL blob字段保存大文件的注意事项
- 用asp.net自带Provider给web.config加密的注意事项
- 配置config.bib的注意事项以及错误分析——自己都要顶!
- Access建表中对表字段及表名的关键字使用注意事项