如何在Lucene中组合Analyzer实例以删除停止字和词干(5.2.1)



我使用的是Lucene最新版本5.2.1。在为文档编制索引时,我希望删除停止词,之后所有单词都应词干到其词根。

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

Lucene有同时做这两件事的分析器吗

我还编写了一个自定义分析器,用于使用KStemFilter进行Stemming如何在自定义分析器中使用现有的StopAnalyzer

是的,可以将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删除停止词,稍后在分析器链中使用PorterStemFilternglishStemmer更好,你也可以用你喜欢的任何TokenFilter来代替它。

完整的示例可在此处获得-https://raw.githubusercontent.com/MysterionRise/information-retrieval-adventure/master/lucene4/src/main/java/org/mystic/StopWordsStemmingAnalyzer.java

最新更新