Java Lucene 4.1中引发NullPointerException的简单代码
投掷Java Lucene 4.1中引发NullPointerException的简单代码,java,lucene,Java,Lucene,投掷 Tokenizer tokenizer = new org.apache.lucene.analysis.standard.StandardTokenizer (Version.LUCENE_41,new StringReader("!!!")); tokenizer.incrementToken(); 这段代码在Lucene 36上运行正常,为什么会出现异常也许您在发布时在生产代码中替换了传
Tokenizer tokenizer
= new org.apache.lucene.analysis.standard.StandardTokenizer
(Version.LUCENE_41,new StringReader("!!!"));
tokenizer.incrementToken();
这段代码在Lucene 36上运行正常,为什么会出现异常也许您在发布时在生产代码中替换了传递给StringReader的文本,但是
“!!!”
似乎会导致我的奇怪行为。因为字符串完全是标点符号,所以我不相信有任何标记可供它使用。老实说,我不确定当使用没有令牌的输入调用时,.incrementToken()
应该做什么
您是否尝试过使用带有有效令牌的输入?我遇到了与您完全相同的问题(即从3.6升级到4.1后出现NullPointerException),尽管我使用的是
org.apache.lucene.analysis.TokenStream
。在深入研究Lucene源代码之后,我发现在调用incrementToken
之前调用reset
方法可以解决这个问题
您可以在此处查看以前版本的文档:
当然,它不应该创建令牌,但incrementToken()应该只返回false而不是抛出异常,关键是这个测试用例与Lucene 3.6兼容,谢谢这就是解决方案
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)