Lucene不敏感空白分析器?

Lucene不敏感空白分析器?,lucene,lucene.net,whitespace,Lucene,Lucene.net,Whitespace,我使用lucene进行搜索,并使用空白分析器进行标记。它看起来像是妥善存放的。用标准分析器,我的C’s搜索将产生C,C++的结果。我试过的每个分析器(我还没有全部试过)都会这样做,除了空白分析器。这很好,除非我搜索c#没有结果(我使用的是小写c而不是大写)。如果我搜索一个标题,比如“Lucene不敏感的空白分析器”,而它恰好是“Lucene不敏感的空白分析器”,这会很烦人。(请注意,前3个单词以upper开头,最后一个单词与我搜索的一个upper和all lower不同) 如何制作不敏感的空白分

我使用lucene进行搜索,并使用空白分析器进行标记。它看起来像是妥善存放的。用标准分析器,我的C’s搜索将产生C,C++的结果。我试过的每个分析器(我还没有全部试过)都会这样做,除了空白分析器。这很好,除非我搜索c#没有结果(我使用的是小写c而不是大写)。如果我搜索一个标题,比如“Lucene不敏感的空白分析器”,而它恰好是“Lucene不敏感的空白分析器”,这会很烦人。(请注意,前3个单词以upper开头,最后一个单词与我搜索的一个upper和all lower不同)


如何制作不敏感的空白分析器?注意:WhitespaceAnalyzer是密封的。

尝试将小写筛选器与WhitespaceTokenizer结合使用:


您可以创建如下自定义分析器(以Lucene 4.10.4版为例)

您可以使用分析器在索引时配置索引编写器,也可以在搜索时使用它创建查询解析器

class CaseInsensitiveWhitespaceAnalyzer : Analyzer
{
    public override TokenStream TokenStream(string fieldName, TextReader reader)
    {
        var tokenizer = new WhitespaceTokenizer(reader);
        var lowercaseFilter = new LowerCaseFilter(tokenizer);

        return new StopFilter(true, lowercaseFilter, StopAnalyzer.ENGLISH_STOP_WORDS_SET, true);
    }
}

这是一个适用于我的用例的C版本。

我试图编写一个分析器。你知道教程吗?一旦我找到一个好的教程,我会尝试这个。我有足够的时间来解决这个问题。有关如何编写自己的分析工具的更多信息,请参阅。我想不出来。最后,我在add函数中使用了所有文本的大写字母,并在搜索函数中再次使用。它现在工作得很好
class CaseInsensitiveWhitespaceAnalyzer : Analyzer
{
    public override TokenStream TokenStream(string fieldName, TextReader reader)
    {
        var tokenizer = new WhitespaceTokenizer(reader);
        var lowercaseFilter = new LowerCaseFilter(tokenizer);

        return new StopFilter(true, lowercaseFilter, StopAnalyzer.ENGLISH_STOP_WORDS_SET, true);
    }
}