我是Solr的初学者,并且遇到了不需要的字符进入查询结果的问题.例如,当我搜索"foo bar"时,我得到了"'foo'bar"等内容.我只想要完全匹配.据我所知,这可以在schema.xml文件中设置.我的内容字段类型:
<fieldtype name="textNoStem" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<filter class="solr.LowerCaseFilterFactory"/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldtype>
Run Code Online (Sandbox Code Playgroud)
如果您知道解决方案,请告诉我.亲切的问候.
Pas*_*imo 14
对于两个分析器,第一行应该是tokenizer.标记器用于将文本拆分为较小的单位(大多数时候是单词).根据您的需要,WhitespaceTokenizerFactory可能是正确的选择.
如果您想要绝对精确匹配,则在标记生成器之后不需要任何过滤器.但是,如果您不希望搜索区分大小写,则需要添加LowerCaseFilterFactory.
请注意,您有两个分析器:一个是"index"类型,另一个是"query"类型.正如名称所暗示的那样,第一个用于索引内容,而另一个用于查询时.几乎总是好的规则是为两个分析器设置相同的标记器/过滤器集.