C# 如何从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中的令牌流中提取一个经过分析的术语,但会出现运行时错误。


有人在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();