本文主要是介绍solr 搜索时加空格没有结果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用SOLR搜索时候常会出现以下问题,比如搜索“茶油” 可以搜索到结果,但是 茶和油之间加个空格就没有结果了
首先你要了解产生这个原因的原理。
schema.xml
<defaultSearchField>name</defaultSearchField>
solrconfig.xml
<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>
schema.xml中defaultSearchField和solrconfig.xml中df属性都是默认搜索字段的意思,不过后者只针对"/select"请求。优先级是solrconfig.xml的df高于schema.xml的defaultSearchField。
设置默认搜索字段的效果:搜索条件为 title:随意 问,中间的空格默认相当于OR,"text"优先于"name",因此搜索条件等价于 title:随意 OR text:问,所以会搜索不出结果。
建议解决方法:
方法1:可以将搜索条件变为 title:(随意 问),等价于 title:随意 OR title:问。
方法 2:搜索条件不变,查询时URL加上df参数"&df=title",也可以解决。
方法3:把
<str name="df">text</str>
改为你要默认的查询字段比如改为name 搜索"茶 油"的时候 及类似鱼 name="茶" or name="油"
这篇关于solr 搜索时加空格没有结果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!