lucene维基百科查询

lucene维基百科查询,lucene,tokenize,Lucene,Tokenize,我正在使用lucene从wiki dump中查询并获取类别。因此,我得到了相关的文档,对于每个文档,我调用下面的函数 static List<String> getCategories(Document document) throws IOException { List<String> categories = new ArrayList<String>(); String text = document.get("text");

我正在使用lucene从wiki dump中查询并获取类别。因此,我得到了相关的文档,对于每个文档,我调用下面的函数

static List<String> getCategories(Document document) throws IOException
{
    List<String> categories = new ArrayList<String>();
    String text = document.get("text");
    WikipediaTokenizer tf = new WikipediaTokenizer(new StringReader(text));

    CharTermAttribute termAtt = tf.addAttribute(CharTermAttribute.class);
    TypeAttribute typeAtt = tf.addAttribute(TypeAttribute.class);

    while (tf.incrementToken())
    {
        String tokText = termAtt.toString();
        if (typeAtt.type().equals(WikipediaTokenizer.CATEGORY) == true)
        {
            categories.add(tokText);
        }
    }

    return categories;
}

我看了zzRefill()函数,但我不能理解它。这是已知的bug还是什么?我不知道我做错了什么。lucene的人说整个wikipediaTokenizer部分都处于测试阶段,可能会发生变化。我希望有人能帮助我。

我通过在调用while循环之前添加tf.reset()解决了这个问题。

当对象变量被取消引用时(如在
SearchIndex.getCategories
中),会发生
NullPointer
异常,但对象变量实际上并不包含对象(
new
)。看起来它发生在
while
循环条件下的
tf.IncrementToken()?我真的很抱歉,但我几乎没有用java编程。。。我正在写一个快速的黑客程序,以便以某种方式完成这项工作。
getCategories
是您的代码吗?它发生在Lucene中,因此如果没有源代码,我不知道如何解决这个问题。是的,我从这里借用了相关的部分-是的,恐怕就是这样。文档中说wikipedia标记器(我正在使用)受到剧烈变化的影响,可能会局部崩溃。我会在邮件列表中试试运气。。。
Exception in thread "main" java.lang.NullPointerException
    at org.apache.lucene.analysis.wikipedia.WikipediaTokenizerImpl.zzRefill(WikipediaTokenizerImpl.java:574)
    at org.apache.lucene.analysis.wikipedia.WikipediaTokenizerImpl.getNextToken(WikipediaTokenizerImpl.java:781)
    at org.apache.lucene.analysis.wikipedia.WikipediaTokenizer.incrementToken(WikipediaTokenizer.java:200)
    at SearchIndex.getCategories(SearchIndex.java:82)
    at SearchIndex.main(SearchIndex.java:54)