我使用的查询架构需要让 abc
匹配 Abc
和 400
匹配 400
(用户名匹配)。
但是我发现当我使用LowerCaseFilterFactory
时,当我查询400
时它没有返回任何结果。
我深入研究了源代码,发现 LowerCaseTokenizerFactory
使用 LowerCaseTokenizer
扩展了 LetterTokenizer
,并且它过滤了所有数字。
我应该如何解决这个问题?
最佳答案
您是对的,LowerCaseTokenizer
将删除所有非字母。查看您的架构非常有用(就提供有意义的答案而言),因为我不认为仅使用小写过滤器工厂就应该生成任何类型的Tokenizer
。
无论如何,分词器还有很多其他选择。两者Standard
或Classic
可能更适合您的需求。
类似的事情:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
可能对你有好处。
关于java - solr LowerCaseFilterFactory 不应过滤数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16248589/