5

我使用 Lucene.NET3.0.3 如何获取 TermAttribute。我尽我所能,但我无法得到它

这里来源:

    Analyzer analyzer = new Lucene.Net.Analysis.Snowball.SnowballAnalyzer(Lucene.Net.Util.Version.LUCENE_30, "English",stopword);

    TokenStream tokenStream = analyzer.TokenStream("English", new StringReader("How to get TermAttribute"));

    while (tokenStream.IncrementToken())
    {
         ???How to get TermAttribute

    }
4

2 回答 2

9
var termAttr = tokenStream.GetAttribute<Lucene.Net.Analysis.Tokenattributes.ITermAttribute>();

while(tokenStream.IncrementToken())
{
    string term = termAttr.Term;
}
于 2013-04-29T11:23:07.773 回答
3

Apache Lucene.Net 4.8中,您可以使用以下 C# 代码:( . NET Core 2+)其中term = termAttr.ToString()包含Token as string. 完整方法:PrintTokens(Analyzer analyzer, string fieldName, string text)可以在GitHub msigut/LuceneNet48Demo 获取

    var tokenStream = analyzer.GetTokenStream(fieldName, textToAnalyze);
    var termAttr = tokenStream.GetAttribute<ICharTermAttribute>();

    tokenStream.Reset();

    while (tokenStream.IncrementToken())
    {
        string term = termAttr.ToString();
    }
于 2019-01-24T00:38:14.720 回答