C# 如何从Lucene.NET 4.8中的令牌流中获取经过分析的术语
我正在使用以下代码行从Lucene.NET 4.8中的令牌流中提取一个经过分析的术语,但会出现运行时错误。C# 如何从Lucene.NET 4.8中的令牌流中获取经过分析的术语,c#,lucene,lucene.net,C#,Lucene,Lucene.net,我正在使用以下代码行从Lucene.NET 4.8中的令牌流中提取一个经过分析的术语,但会出现运行时错误。 有人在Lucene.NET 4.8中这样做过吗?我没有,但您是否尝试过使用TermAttribute而不是ITermAttribute?是的。TermAttribute似乎消失了,不再有一个GetAttribute(如Lucene.NET 2)在v4.8中采用类型参数。好吧,我相信您会想改用CharterMatAttribute(或iCharterMatAttribute)。这将与4.0
有人在Lucene.NET 4.8中这样做过吗?我没有,但您是否尝试过使用
TermAttribute
而不是ITermAttribute
?是的。TermAttribute
似乎消失了,不再有一个GetAttribute
(如Lucene.NET 2)在v4.8中采用类型
参数。好吧,我相信您会想改用CharterMatAttribute
(或iCharterMatAttribute
)。这将与4.0.0版java API中所做的相同替换并行!将ITermAttribute
替换为ichartermatribute
,并在termAttr
上执行ToString()
,将提取分析的术语。巧妙地查看相应的JavaAPI。非常感谢。我没有,但是您是否尝试过使用termtattribute
而不是ITermAttribute
?是的。TermAttribute
似乎消失了,不再有一个GetAttribute
(如Lucene.NET 2)在v4.8中采用类型
参数。好吧,我相信您会想改用CharterMatAttribute
(或iCharterMatAttribute
)。这将与4.0.0版java API中所做的相同替换并行!将ITermAttribute
替换为ichartermatribute
,并在termAttr
上执行ToString()
,将提取分析的术语。巧妙地查看相应的JavaAPI。非常感谢。
var analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);
TokenStream tokenStream = analyzer.TokenStream(null, new StringReader("myterm"));
tokenStream.Reset();
while (tokenStream.IncrementToken())
{
var termAttr = tokenStream.GetAttribute<ITermAttribute>();
var analyzedTerm = termAttr.Term;
}
tokenStream.End();
tokenStream.Dispose();
var analyser = new StandardAnalyzer(Version.LUCENE_30);
var tokenStream = analyzer.TokenStream(null, new StringReader("myterm"));
tokenStream.Reset();
while (tokenStream.IncrementToken())
{
var termAttr = tokenStream.GetAttribute<ITermAttribute>();
var analyzedTerm = termAttr.Term;
}
tokenStream.End();
tokenStream.Dispose();
var analyser = new StandardAnalyzer(Version.LUCENE_29);
var tokenStream = analyser.TokenStream(null, new StringReader("myterm"));
tokenStream.Reset();
while (tokenStream.IncrementToken())
{
var termAttr = tokenStream.GetAttribute(typeof(TermAttribute));
var analyzedTerm = termAttr.ToString();
}
tokenStream.End();
tokenStream.Close();