2013-02-25 119 views
0
Tokenizer tokenizer 
      = new org.apache.lucene.analysis.standard.StandardTokenizer 
            (Version.LUCENE_41,new StringReader("!!!")); 
tokenizer.incrementToken(); 

抛出简单的代码抛出一个NullPointerException

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,为什么它thorweing异常

回答

2

我的问题与您完全相同(即从3.6升级到4.1后出现NullPointerException),尽管我使用的是org.apache.lucene.analysis.TokenStream。在Lucene源文件中进行挖掘后,我发现在调用incrementToken之前调用reset方法可解决此问题。

你可以看看以前版本在这里的文档:

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)

+0

感谢这是解决方案 – 2013-02-26 22:03:42

0

也许你更换传递给StringReader文本在您的产品代码中,当您将其发布到此处时,但"!!!"似乎是可能导致我发生奇怪行为的事情。由于字符串完全是标点符号,所以我不相信这里有任何令牌可以使用。我真的不确定什么.incrementToken()应该做的时候用一个没有令牌的输入进行调用。

您是否使用带有效令牌的输入尝试过它?

+0

当然,这sholdn't创建令牌,但incrementToken()应该只是返回false不是抛出一个异常,点是这个测试用例与Lucene 3.6 – 2013-02-26 09:37:30

相关问题