我很难把头绕在 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() 处失败。据我了解,ShingleAnalyzerWrapper 使用另一个 Analyzer 来创建 shingle 分析器对象。从那里,我将其转换为令牌流,然后使用属性过滤器对其进行解析。但是,它总是会导致此异常:
线程“主”java.lang.AbstractMethodError 中的异常:org.apache.lucene.analysis.TokenStream.incrementToken()Z
想法?提前致谢!