Java 使用Lucene 6对英语单词进行词干分析
我想用Lucene 6.5来屏蔽英语单词。我已经看到了很多使用Lucene来实现这一点的例子。然而,到目前为止,我看到的例子似乎是使用旧版本的Lucene,而使用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
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。。。我只是不清楚如何与一个英国分析学家结合。