6

I use Lucene.NET3.0.3 how to get TermAttribute.I try my best but i can't get it

here source:

    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

    }
I4V
  • 34,891
  • 6
  • 67
  • 79
NetS
  • 63
  • 4

2 Answers2

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

while(tokenStream.IncrementToken())
{
    string term = termAttr.Term;
}
I4V
  • 34,891
  • 6
  • 67
  • 79
4

In Apache Lucene.Net 4.8 you can use this C# code: (.NET Core 2+) where term = termAttr.ToString() contains Token as string. Complete method: PrintTokens(Analyzer analyzer, string fieldName, string text) you can get at GitHub msigut/LuceneNet48Demo.

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

    tokenStream.Reset();

    while (tokenStream.IncrementToken())
    {
        string term = termAttr.ToString();
    }
Martin
  • 6,436
  • 1
  • 17
  • 10