【问题标题】:Solr case insensitveSolr 不区分大小写
【发布时间】:2011-05-25 13:49:20
【问题描述】:

你好,

我正在 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 这意味着像“comput”这样的查询会导致“computer”,而“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>

由于某种原因,它也没有说话。我的问题是为什么以及如何解决这个问题?

【问题讨论】:

    标签: configuration lucene solr case case-insensitive


    【解决方案1】:

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

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

    现在,针对您的问题,我会推荐一种名为 ngram 的技术,它可以拆分您的查询,然后搜索这些短语。因此,即使有错别字,您仍然可以获得出色的结果。

    要知道如何做到这一点,我建议您阅读this 以帮助您入门。它还有其他关于查询的重要信息。 这不仅可以解决您的问题,还可以增强您的应用。

    玩得开心:D

    【讨论】:

    • 嘿,我发现了一个类似的帖子。看看它是否也有帮助:这是Link :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多