3

アナライザーを使用して文字列を「分析」し、分析された文字列を返すにはどうすればよいですか?

このサイトで見つかった以下のコードを試していますが、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

4

1 に答える 1

3

代わりにtokenStreamResult.GetAttribute< ITermAttribute >() を試してください

于 2013-04-09T05:40:59.900 に答える