如何使用Lucene库提取n-gram?
我正艰难地试图在Lucene图书馆周围盘旋。这就是我到目前为止所做的:如何使用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
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。