C# Lucene.Net不区分大小写的关键字分析器ReusableTokenStream

C# Lucene.Net不区分大小写的关键字分析器ReusableTokenStream,c#,lucene,lucene.net,C#,Lucene,Lucene.net,正如标题所说,我需要一个Lucene.Net不区分大小写的关键字分析器 我想到了这个 using Lucene.Net.Analysis; namespace LuceneTools { public sealed class LowerCaseKeywordAnalyzer :Analyzer { public override TokenStream TokenStream(System.String fieldName, System.IO.TextReader read

正如标题所说,我需要一个Lucene.Net不区分大小写的关键字分析器

我想到了这个

using Lucene.Net.Analysis;

namespace LuceneTools
{
  public sealed class LowerCaseKeywordAnalyzer :Analyzer
  {
    public override TokenStream TokenStream(System.String fieldName, System.IO.TextReader reader)
    {
        return new LowerCaseFilter(new KeywordTokenizer(reader));
    }

    public override TokenStream ReusableTokenStream(System.String fieldName, System.IO.TextReader reader)
    {
        return new LowerCaseFilter(new KeywordTokenizer(reader));
    }
  }
}

虽然上面的代码似乎可以工作,但我并不真正理解我应该如何使用ReusableTokenStream来做不同的事情?我想上述情况是不好的,但我不确定如何/为什么或该怎么办。也许我根本不应该覆盖它,但如果我不知道,使用该路由的代码会发生什么?

您所拥有的实际上等同于不实现
ReusableTokenStream
。以下是
分析器
源代码(java):

因此,您的实现没有比默认实现做得更糟

ReuseableTokenStream
的目的是通过不必在每次调用时都重新创建所有内容来提高性能,通常是尝试
reset()
最后一个流,如果失败,则返回到只调用
tokenStream
。显然,您的实现并没有真正做到这一点

public TokenStream reusableTokenStream(String fieldName, Reader reader) throws IOException {
    return tokenStream(fieldName, reader);
}