首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lucene wikipedia查询

lucene wikipedia查询
EN

Stack Overflow用户
提问于 2013-03-20 03:17:30
回答 1查看 302关注 0票数 0

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

代码语言:javascript
复制
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;
}

但是它在while语句中抛出了以下错误。

代码语言:javascript
复制
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)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-20 04:18:44

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15508505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档