0
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)

このコードはLucene36で正常に機能していましたが、なぜ例外が発生するのですか?

4

2 に答える 2

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)

于 2013-02-26T17:22:25.863 に答える
0

ここに投稿したときに、プロダクションコードでStringReaderに渡されたテキストを置き換えた"!!!"可能性がありますが、私には奇妙な動作につながる可能性があるもののようです。文字列は完全に句読点であるため、消費するトークンはないと思います。.incrementToken()トークンを含まない入力で呼び出された場合、正直なところわかりません。

有効なトークンを使用した入力を使用して試しましたか?

于 2013-02-25T23:20:06.057 に答える