19 using System.Collections.Generic;
21 using Lucene.Net.Analysis.Tokenattributes;
23 namespace Lucene.Net.Analysis.Hunspell {
33 private readonly Queue<HunspellStem> _buffer =
new Queue<HunspellStem>();
34 private State _savedState;
36 private readonly Boolean _dedup;
47 _posIncAtt = AddAttribute<IPositionIncrementAttribute>();
48 _termAtt = AddAttribute<ITermAttribute>();
56 var nextStem = _buffer.Dequeue();
58 RestoreState(_savedState);
59 _posIncAtt.PositionIncrement = 0;
60 _termAtt.SetTermBuffer(nextStem.Stem, 0, nextStem.StemLength);
64 if (!input.IncrementToken())
68 ? _stemmer.UniqueStems(_termAtt.Term)
69 : _stemmer.Stem(_termAtt.Term);
70 foreach (var newTerm
in newTerms)
71 _buffer.Enqueue(newTerm);
73 if (_buffer.Count == 0)
77 var stem = _buffer.Dequeue();
78 _termAtt.SetTermBuffer(stem.Stem, 0, stem.StemLength);
80 if (_buffer.Count > 0)
81 _savedState = CaptureState();