我需要将此代码从lucene.net 2.3.2翻译为3.0.3。
此代码在2.3.2中工作正常,但在3.0.3中,方法tokenStream.Next()不返回标记,而是返回布尔值。我需要了解的是当next()返回true时读取令牌对象的位置。
Analyzer analyzer = new StandardAnalyzer();
StringReader stringReader = new StringReader("the house id red");
TokenStream tokenStream = analyzer.TokenStream("", stringReader);
Token token = tokenStream.Next();
while (token != null)
{
System.Diagnostics.Debug.Write(token.TermText());
token = tokenStream.Next();
}
答案 0 :(得分:0)
Lucene 3+中的TokenStream现在可以代表流中每个位置的一整套值(称为属性)。因此,您需要将示例修改为属性感知...
var analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
var stringReader = new StringReader("the house id red");
var tokenStream = analyzer.TokenStream(string.Empty, stringReader);
var termAtt = tokenStream.GetAttribute<ITermAttribute>();
while (tokenStream.IncrementToken())
{
Console.WriteLine(termAtt.Term);
}