有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Lucene_36无法解析或不是字段

我试图在我的程序中使用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 - Cannot be resolved or is not a field

有什么帮助吗

谢谢你们


共 (2) 个答案

  1. # 1 楼答案

    自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);
    
  2. # 2 楼答案

    if I do Version.LUCENE_CURRENT this does not work either

    为什么呢?因为它已经从5.4.1 API中被弃用了

    static Version  LUCENE_CURRENT
    

    Deprecated. Use LATEST

    public static final Version LATEST
    

    例:

    Version.LATEST
    

    或者

    Version.LUCENE_5_4_1