首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WikipediaTokenizer Lucene

WikipediaTokenizer Lucene
EN

Stack Overflow用户
提问于 2014-05-28 15:35:11
回答 1查看 137关注 0票数 0

我尝试用Lucene解析Wikipedia标记,发现这个小项目:

3/api/contrib-wikipedia/org/apache/lucene/wikipedia/analysis/WikipediaTokenizer.html

(未能检索到适当的网站,对不起)

下面是一个代码示例的较短版本,它以某种方式在这个库中循环。运行它时,我会得到一个非空WikipediaTokenizer,但一旦执行incrementToken(),就会得到一个空指针异常。有什么想法吗?

代码语言:javascript
运行
复制
import org.apache.log4j.Logger;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.wikipedia.WikipediaTokenizer;

import java.io.StringReader;

public class WikipediaTokenizerTest {
  static Logger logger = Logger.getLogger(WikipediaTokenizerTest.class);
  protected static final String LINK_PHRASES = "click [[link here again]] click     [http://lucene.apache.org here again] [[Category:a b c d]]";

public WikipediaTokenizer testSimple() throws Exception {
    String text = "This is a [[Category:foo]]";
    return new WikipediaTokenizer(new StringReader(text));
}
public static void main(String[] args){
    WikipediaTokenizerTest wtt = new WikipediaTokenizerTest();

    try {
        WikipediaTokenizer x = wtt.testSimple();

        logger.info(x.hasAttributes());

        while (x.incrementToken() == true) {
            logger.info("Token found!");
        }

    } catch(Exception e){
        logger.error("Exception while tokenizing Wiki Text: " + e.getMessage());
    }

}

我对Maven (pom.xml)使用以下依赖项:

代码语言:javascript
运行
复制
<dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>4.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers-common</artifactId>
        <version>4.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>4.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-wikipedia</artifactId>
        <version>3.0.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers</artifactId>
        <version>3.1.0</version>
    </dependency>

任何帮助都将不胜感激!如果有人有更好的库或解决方案,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 15:45:56

你不能把你的lucene版本混在一起。您使用的是4.2.1版本。它与3.1.0或3.0.3版本都不兼容。您需要删除这些依赖项。

WikipediaTokenizer包括在分析器中--常见。

而且,您没有履行TokenStream所要求的合同。请参见 documentation,其中描述了TokenStream API的工作流。特别是,在调用incrementToken()之前,必须调用reset()。您还应该使用end()close()

代码语言:javascript
运行
复制
WikipediaTokenizer x = wtt.testSimple();
logger.info(x.hasAttributes());
x.reset();
while (x.incrementToken() == true) {
    logger.info("Token found!");
}
x.end();
x.close();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23916012

复制
相关文章

相似问题

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