我不知道这是一个错误或功能,但Solr NGramFilterFactory对数字不起作用。
这是我的字段类型:
<fieldType name="phone_test" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="30" side="front" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldType>
当我在Solr管理界面中使用分析器并输入一个单词,例如“business”时,它工作正常,但是当我写数字时,如12345678,它不起作用。
我想要的是搜索部分电话号码。如果我有123456789作为电话号码并且我搜索456或6789,我应该受到打击。
有什么想法吗?
答案 0 :(得分:2)
LowerCaseFilterFactory的定义如下。
通过小写所有字母并删除非字母来创建标记。
它正在丢弃你的号码,因为它们是非字母的。我建议您使用KeywordTokenizerFactory或StandardTokenizerFactory。因为这些应该正确处理您的数字输入。