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一起工作正常,为什么它会出现异常
答案 0 :(得分:2)
我遇到了与你完全相同的问题(即从3.6升级到4.1后的NullPointerException),尽管我使用的是org.apache.lucene.analysis.TokenStream
。在浏览Lucene源代码后,我发现在调用reset
之前调用incrementToken
方法解决了这个问题。
您可以在此处查看以前版本的文档:
答案 1 :(得分:0)
也许你在这里发布了生成代码时替换了生成代码中传递给StringReader的文本,但是"!!!"
似乎可能导致我的奇怪行为。由于字符串完全是标点符号,我不相信它有任何令牌供它使用。老实说,当用一个没有令牌的输入调用时,我不确定.incrementToken()
应该做什么。
您是否使用带有效令牌的输入进行了尝试?