java - Lucene_36 - 无法解析或不是字段

标签 java lucene stop-words

我正在尝试在程序中使用 Lucene 来删除停用词并实现词干提取?但是,当我尝试像这样导入 Lucene_36 时......

public String removeStopWords(){
    StandardAnalyzer analyser = new StandardAnalyzer(Version.LUCENE_36);
     Analyzer analyzer = new StopAnalyzer(Version.LUCENE_36);
    TokenStream tokenStream = new StandardTokenizer(Version.LUCENE_36,new StringReader(GetTweets.tweetContent));
    StringBuilder sb = new StringBuilder();
    tokenStream = new StopFilter(Version.LUCENE_36, tokenStream, StandardAnalyzer.STOP_WORDS_SET);
    CharTermAttribute token = tokenStream.getAttribute(CharTermAttribute.class);

它会在代码的 Lucene_36 部分下方返回错误,提示 Lucene_36 - 无法解析或不是字段

有什么帮助吗?

谢谢大家

最佳答案

自 3.6 版以来,API 发生了很多变化。 Lucene 3.6 的向后兼容性在版本 5.0 中被删除,除此之外,这些构造函数都不再采用 Version 参数。

我不太确定您如何使用分析器以及您在此处构建的分析器,但这里有一个至少应该编译的快速重写:

public String removeStopWords(){
    StandardAnalyzer analyser = new StandardAnalyzer();
    Analyzer analyzer = new StopAnalyzer();
    Tokenizer tokenizer = new StandardTokenizer();
    tokenizer.setReader(new StringReader(GetTweets.tweetContent));
    TokenStream tokenStream = tokenizer;
    StringBuilder sb = new StringBuilder();
    tokenStream = new StopFilter(tokenStream, StandardAnalyzer.STOP_WORDS_SET);
    CharTermAttribute token = tokenStream.getAttribute(CharTermAttribute.class);

关于java - Lucene_36 - 无法解析或不是字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317337/

相关文章:

java - Oracle程序转java批处理

java - java中wav文件转换为字节数组

java - 使用 HTTP URL 将文件名从 Java 传递到 PHP

lucene - Solr/Lucene : What is the difference between regular queries and filter queries

python - 摆脱停用词和标点符号

Java 相当于 PHP 的 DIRECTORY_SEPARATOR?

multithreading - Lucene如何在多线程环境下使用IndexReader?

java - Lucene 4.1 中的 Lucene 3.6 中的 Document.setBoost() 等效于什么?

python - 下面的python代码有什么错误

python - 使用 NLTK 删除停用词