Lucene 4.1中的简单代码抛出NullPointerException

时间:2013-02-25 18:03:03

标签: java lucene

Tokenizer tokenizer 
           = new org.apache.lucene.analysis.standard.StandardTokenizer
                                    (Version.LUCENE_41,new StringReader("!!!"));
tokenizer.incrementToken();

抛出

java.lang.NullPointerException
    at org.apache.lucene.analysis.standard.std34.StandardTokenizerImpl34.zzRefill(StandardTokenizerImpl34.java:812)
    at org.apache.lucene.analysis.standard.std34.StandardTokenizerImpl34.getNextToken(StandardTokenizerImpl34.java:1019)
    at org.apache.lucene.analysis.standard.StandardTokenizer.incrementToken(StandardTokenizer.java:180)

此代码与Lucene 36一起工作正常,为什么它会出现异常

2 个答案:

答案 0 :(得分:2)

我遇到了与你完全相同的问题(即从3.6升级到4.1后的NullPointerException),尽管我使用的是org.apache.lucene.analysis.TokenStream。在浏览Lucene源代码后,我发现在调用reset之前调用incrementToken方法解决了这个问题。

您可以在此处查看以前版本的文档:

https://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/api/all/org/apache/lucene/analysis/standard/StandardTokenizer.html#reset(java.io.Reader)

答案 1 :(得分:0)

也许你在这里发布了生成代码时替换了生成代码中传递给StringReader的文本,但是"!!!"似乎可能导致我的奇怪行为。由于字符串完全是标点符号,我不相信它有任何令牌供它使用。老实说,当用一个没有令牌的输入调用时,我不确定.incrementToken()应该做什么。

您是否使用带有效令牌的输入进行了尝试?