如何在Lucene(5.2.1)中组合分析器实例以停止单词删除和词干化?

时间:2015-08-12 06:52:52

标签: java indexing lucene stemming stop-words

我正在使用 Lucene 最新版本 5.2.1 ..在索引文档时,我希望删除停用词之后,所有单词都应该被删除它的根词。

EnglishAnalyzer 可用但词干不准确。还有 StopAnalyzer 可以删除停用词。

Lucene有没有做过这两件事的分析仪?

我为了使用KStemFilter 进行干扰而编写了一个自定义分析器。 如何在自定义分析器中使用现有的StopAnalyzer

1 个答案:

答案 0 :(得分:4)

是的,可以将Lucene中的不同分析仪组合在一起。

你应该使用这样的东西:

StringReader reader = new StringReader(text);
Tokenizer whitespaceTokenizer = new WhitespaceTokenizer();
whitespaceTokenizer.setReader(reader);
TokenStream tokenStream = new StopFilter(whitespaceTokenizer, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
tokenStream = new PorterStemFilter(tokenStream);

其中 text 是一个变量,包含您想要分析的内容。在这里我结合了空格标记化(可能你可以用更强大的 StandardAnalyzer 替换它)然后我用 StopFilter 删除停用词然后在分析器链中使用 PorterStemFilter (也比简单的 EnglishStemmer 更好,你也可以用你喜欢的任何 TokenFilter 替换它。

此处提供完整示例 - https://raw.githubusercontent.com/MysterionRise/information-retrieval-adventure/master/lucene4/src/main/java/org/mystic/StopWordsStemmingAnalyzer.java