我正在使用 Lucene 最新版本 5.2.1 ..在索引文档时,我希望删除停用词之后,所有单词都应该被删除它的根词。
EnglishAnalyzer 可用但词干不准确。还有 StopAnalyzer 可以删除停用词。
Lucene有没有做过这两件事的分析仪?
我为了使用KStemFilter 进行干扰而编写了一个自定义分析器。 如何在自定义分析器中使用现有的StopAnalyzer
答案 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 替换它。