1

我不知道这是错误还是功能,但 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 管理界面中使用分析器并输入诸如“业务”之类的单词时,它工作正常,但是当我写数字(例如 12345678)时,它不起作用。

我想要的是搜索部分电话号码。如果我有 123456789 作为电话号码,并且我搜索 456 或 6789,我应该会成功。

有任何想法吗?

4

1 回答 1

2

LowerCaseFilterFactory的定义如下。

通过小写所有字母并删除非字母来创建标记。

它正在删除您的数字,因为它们是非字母。我建议使用KeywordTokenizerFactoryStandardTokenizerFactory。因为这些应该正确处理您的数字输入。

于 2013-01-28T19:53:40.620 回答