1

假设我存储了一组字符串(Lucene 中的每个文档都是一个单词),然后给定一个输入单词 W,我想检索不仅匹配单词 W 的所有文档,还检索那些词干版本也匹配的文档W。

另外,假设输入一个单词 W,我想处理存在与单词 W 的词干版本匹配的文档的情况。

编写我自己的自定义分析器并返回一个 PorterStemFilter 就足够了吗?我是否需要编写此类并将其作为代码中的分析器引用?

4

1 回答 1

2

编写一个在分析器链中具有词干分析器的自定义分析器就足够了。

这是在 Lucene 4.1中使用PorterStemFilter的示例代码

 class MyAnalyzer extends Analyzer {
  @Override
  protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
    Tokenizer source = new LowerCaseTokenizer(version, reader);
    return new TokenStreamComponents(source, new PorterStemFilter(source));
  }
}

请注意,您必须在查询时使用相同的自定义分析器,该分析器也用于索引。

您可以在相应的 PorterStemFilter 文档中找到您的 Lucene 版本的示例代码。

于 2013-03-18T14:33:37.883 回答