我的数据库包含fist_name为'Sumit',当我搜索它时,给出了以下first_name的结果:Sumit~0.7 / first_name:Sumits~0.7
但是如果我尝试使用case insensitve搜索,它就不会返回任何内容 -first_name:SUMIT~0.7 / first_name:SUMit~0.7
我的schema.xml内容是:
<fieldType name="custum_fuzzy_text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
有人可以帮忙吗?难道我做错了什么?或者我还做其他事吗
答案 0 :(得分:2)
On wildcard and fuzzy searches, no text analysis is performed on the search word.
由于在查询时没有对模糊搜索进行分析,因此在查询时间内将应用小写过滤器 您需要在客户端处理它。
答案 1 :(得分:1)
您使用的是哪个版本的Solr?这非常重要。另外,您实际上是使用''(如Summit )或普通文本进行模糊查询。这两种情况也不同。
如果您正在进行'*'查询并且您的Solr在3.6之前,那么您正在点击the MultiTerm issue(模糊的技术名称)。
如果您不使用*,我不确定问题是什么。使用Solr 4,Admin界面具有Analyzer部分,您可以在其中根据字段定义放置文本并查看结果。试试吧。
最后,请注意,如果你的索引和查询分析器设置相同,你不需要写两次,只需要一个组合的分析器部分(没有type = ...)