Solr不区分大小写

时间:2011-05-25 13:49:20

标签: configuration lucene solr case case-insensitive

你好,

我在Solr中实现了自动完成功能,但有一个问题。

对于自动完成,我正在使用

<fieldType name="text_auto" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>  
        <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
</fieldType> 

我认为LowerCaseFilter应该使Token Case不敏感,但这是错误的。事实上,只是在较小的情况下令牌,这意味着像“计算机”这样的查询将导致“计算机”,而“计算机”则不会。 实际上我希望计算机和Comput通向计算机。

我已经尝试过这个:

<fieldType name="text_auto_low" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>  
        <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
</fieldType> 

<fieldType name="text_auto_up" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>  
    </analyzer>
</fieldType>

   

由于某种原因,它也没有说出来。我的问题是为什么我能解决这个问题?

1 个答案:

答案 0 :(得分:1)

Lucene有Analyzer类,您可以通过三种方式使用(实现):

  • SimpleAnalyzer :这会将所有输入转换为小写。
  • StopAnalyzer :这会删除从搜索中删除噪音的字词。
  • StandardAnalyzer :这会执行上述两种过滤流程,因此可以“清理”您的查询。

现在,提出您的问题,我会推荐一种名为 ngram 的技术,它会拆分您的查询,然后搜索这些短语。因此,即使存在拼写错误,您仍然可以获得优异的结果。

要知道如何执行此操作,建议您阅读this以帮助您入门。它还有其他有关查询的重要信息。 这不仅可以解决您的问题,还可以增强您的应用。

玩得开心:D