Lucene.Net不区分大小写的关键字分析器ReusableTokenStream
本文关键字:关键字 分析器 ReusableTokenStream 大小写 Net 不区 Lucene | 更新日期: 2023-09-27 18:20:41
正如标题所说,我需要一个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
。以下是Analyzer
源代码(java):
public TokenStream reusableTokenStream(String fieldName, Reader reader) throws IOException {
return tokenStream(fieldName, reader);
}
因此,您的实现不会比默认实现做得更糟。
ReuseableTokenStream
的目的是通过不必每次调用它时都重新创建所有内容来提高性能,通常是通过尝试reset()
最后一个流,如果失败,则只需调用tokenStream
。显然,您的实现并不能真正做到这一点。