アナライザーを使用して文字列を「分析」し、分析された文字列を返すにはどうすればよいですか?
このサイトで見つかった以下のコードを試していますが、ArgumentException
「この AttributeSource には属性 Lucene.Net.Analysis.Tokenattributes.TermAttribute がありません」がスローされます。
public static string AnalyseString(Analyzer analyser, string stringToAnalyse)
{
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
sw.Write(stringToAnalyse);
sw.Flush();
ms.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms);
TokenStream tokenStreamResult = analyser.TokenStream(null,sr);
StringBuilder sb = new StringBuilder();
//Lucene.Net.Analysis.Token t = new Lucene.Net.Analysis.Token();
while (tokenStreamResult.IncrementToken())
{
var attrib = tokenStreamResult.GetAttribute<TermAttribute>();
string t2 = tokenStreamResult.GetAttribute<TermAttribute>().Term;
sb.Append(t2 + " ");
}
return sb.ToString();
}
私は最新の Lucene.Net バージョン (3.0.3.0) を使用しており、SimpleAnalyzer