自定义LetterTokenizer的lucene.net性能问题

自定义LetterTokenizer的lucene.net性能问题,lucene,Lucene,我使用的是lucene.net 3.0.3,我有一个简单的定制分析器和标记器,它们打破了标签上的条款。我对它进行了测量,结果表明索引的速度是使用StandardAnalyzer的两倍(StandardAnalyzer可以做更多的事情)。你知道问题可能是什么,或者是否有更好的解决方案 代码如下 公共类CustomAnalyzer:Analyzer { 公共覆盖令牌流令牌流(字符串字段名,文本阅读器) { 返回新的CustomTokenizer(读卡器); //返回新的字母标记器(读卡器); } p

我使用的是lucene.net 3.0.3,我有一个简单的定制分析器和标记器,它们打破了标签上的条款。我对它进行了测量,结果表明索引的速度是使用StandardAnalyzer的两倍(StandardAnalyzer可以做更多的事情)。你知道问题可能是什么,或者是否有更好的解决方案

代码如下

公共类CustomAnalyzer:Analyzer
{
公共覆盖令牌流令牌流(字符串字段名,文本阅读器)
{
返回新的CustomTokenizer(读卡器);
//返回新的字母标记器(读卡器);
}
public override TokenStream ReusableTokenStream(字符串字段名,文本阅读器)
{
Tokenizer Tokenizer=this.PreviousTokenStream作为标记器;
if(标记器==null)
{
标记器=新的自定义标记器(读卡器);
//标记器=新的字母标记器(读卡器);
}
其他的
{
重设(读卡器);
}
返回标记器;
}
}
公共类CustomTokenizer:LetterTokenizer
{
公共CustomTokenizer(文本阅读器)
:底座(读卡器)
{ }
受保护的覆盖字符规范化(字符c)
{
返回char.ToLower(c,CultureInfo.InvariantCulture);
}
受保护的覆盖布尔IsTokenChar(字符c)
{
//选项卡具有相同的Unicode代码
返回c!='\x0009';
}
}

我忘记更新此线程:问题出在自定义分析器中。实际上,我并没有将标记器保存到PreviousTokenStream,所以每次它都会创建一个新的标记器。

确切地说,什么需要更长的时间?只是分析?或者这还包括解析查询、搜索索引或添加文档吗?另外,您看到的时间增加了多少?我看到索引,特别是添加文档需要两倍的时间。我在每次迭代中创建一个文档,并重用Field对象。好吧,我的猜测是,分析本身对性能的任何影响都是微不足道的,您看到的影响更多地与分析后文档的外观、索引方式,甚至可能与性能测试的实现方式有关。分析它可能有助于发现问题。