Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Lucene 6对英语单词进行词干分析_Java_Lucene_Stemming - Fatal编程技术网

Java 使用Lucene 6对英语单词进行词干分析

Java 使用Lucene 6对英语单词进行词干分析,java,lucene,stemming,Java,Lucene,Stemming,我想用Lucene 6.5来屏蔽英语单词。我已经看到了很多使用Lucene来实现这一点的例子。然而,到目前为止,我看到的例子似乎是使用旧版本的Lucene,而使用Lucene 6复制相同的版本是不可能的 这方面的一个例子是。建议和接受的解决方案使用的是org.apache.lucene.analysis.PorterStemmer,在lucene 6中,它似乎不在同一个包中 更新:我发现PorterStemmer词干分析器的当前完整路径是org.apache.lucene.analysis.en

我想用Lucene 6.5来屏蔽英语单词。我已经看到了很多使用Lucene来实现这一点的例子。然而,到目前为止,我看到的例子似乎是使用旧版本的Lucene,而使用Lucene 6复制相同的版本是不可能的

这方面的一个例子是。建议和接受的解决方案使用的是
org.apache.lucene.analysis.PorterStemmer
,在lucene 6中,它似乎不在同一个包中

更新:我发现PorterStemmer词干分析器的当前完整路径是
org.apache.lucene.analysis.en.PorterStemFilter
。此外,还需要依赖项“
”org.apache.lucene“%”lucene queryparser“%”6.5.0“


我现在正在研究词干列表。我想我会把这个问题转到词干分析上,因为我看到的使用这个词干分析的例子在当前版本的Lucene(6.5.0版)中似乎不起作用,也无法编译。

我终于找到了一种使用Lucene 6的词干分析方法:

public List<String> stem(String term) throws Exception {
    Analyzer analyzer = new StandardAnalyzer();
    TokenStream result = analyzer.tokenStream(null, term);
    result = new PorterStemFilter(result);
    result = new StopFilter(result, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
    CharTermAttribute resultAttr = result.addAttribute(CharTermAttribute.class);
    result.reset();

    List<String> tokens = new ArrayList<>();
    while (result.incrementToken()) {
        tokens.add(resultAttr.toString());
    }
    return tokens;
}
公共列表词干(字符串术语)引发异常{
Analyzer Analyzer=新的StandardAnalyzer();
TokenStream结果=analyzer.TokenStream(null,术语);
结果=新PorterStemFilter(结果);
结果=新的StopFilter(结果,StopAnalyzer.ENGLISH\u STOP\u WORDS\u SET);
CharterMattAttribute ResultAttribute=result.addAttribute(charterMattAttribute.class);
result.reset();
List tokens=new ArrayList();
while(result.incrementToken()){
add(resultAttr.toString());
}
归还代币;
}

使用输入字符串调用此方法,
term
,将返回从输入字符串生成的字符串标记列表。此外,该方法从输入中删除停止字。我将把这个留在这里,希望它能对某人有所帮助。

哇。。。真的有那么复杂吗?在过去的两年里,我为lucene 6做了一次谷歌搜索,几乎没有任何结果。但是在Javadoc中我发现了一个类org.tartarus.snowball.ext.Englishtemmer。。。我只是不清楚如何与一个英国分析学家结合。