Lucene.Net案例不敏感关键字分析器ReusableTokenStream

时间:2014-09-05 09:44:33

标签: c# lucene lucene.net

正如标题所说,我需要一个Lucene.Net Case Insensitive Keyword Analyzer。

我想出了这个......

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做些什么?我猜以上是但我不确定如何/为什么或如何处理它。也许我根本不应该覆盖它,但如果我不知道使用该路由的代码会发生什么?

1 个答案:

答案 0 :(得分:1)

您所拥有的实际上等同于不实施ReusableTokenStream。这是Analyzer源代码(java):

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

所以你的实现没有比默认实现更糟糕的事情。

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