2013-02-25 87 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

相關問題