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)

这段代码在 Lucene 36 上运行良好,为什么会出现异常

4

2 回答 2

2

尽管我使用的是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 回答