如何使用Lucene库提取n-gram?

如何使用Lucene库提取n-gram?,lucene,stream,tokenize,n-gram,Lucene,Stream,Tokenize,N Gram,我正艰难地试图在Lucene图书馆周围盘旋。这就是我到目前为止所做的: public void shingleMe() { try { StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_35); FileReader reader = new FileReader("test.txt"); ShingleAnalyzerWrapper shingleA

我正艰难地试图在Lucene图书馆周围盘旋。这就是我到目前为止所做的:

public void shingleMe()
{

    try
    {
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
        FileReader reader = new FileReader("test.txt");

        ShingleAnalyzerWrapper shingleAnalyzer = new ShingleAnalyzerWrapper(analyzer, 2);
        shingleAnalyzer.setOutputUnigrams(false);

        TokenStream stream = shingleAnalyzer.tokenStream("contents", reader);
        CharTermAttribute charTermAttribute = stream.getAttribute(CharTermAttribute.class);         

        while (stream.incrementToken())
        {
            System.out.println(charTermAttribute.toString());
        }

    }

    catch (FileNotFoundException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    catch (IOException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
它在stream.incrementToken()处失败。据我所知,ShingleAnalyzerRapper使用另一个分析器来创建一个shingle Analyzer对象。从那里,我将其转换为令牌流,然后使用属性过滤器对其进行解析。但是,它总是导致以下例外情况:

线程“main”java.lang.AbstractMethodError中出现异常:org.apache.lucene.analysis.TokenStream.incrementToken()Z


想法?提前谢谢

AbstractMethodError不能因为错误的API使用而发生——它必须是针对一个JAR编译然后针对另一个JAR运行的结果。由于您在这里同时使用Lucene Core和Lucene分析器JAR,请仔细检查编译时和运行时JAR类路径。

谢谢!我有一个旧的analyzer jar和一个新的core jar。