如何在lucene 4.0中使用ngram tokenizer?

时间:2013-07-01 14:56:00

标签: java lucene

我正在使用没有空格的文本索引大文本文件。目前我有ngram方法生成长度为12的字符串然后我索引它们。同样的搜索方式,我从用户获取字符串生成12的ngrams,然后用它来构建查询。在搜索时,请阅读lucene中存在的ngram tokenizer。但无论如何都找不到任何例子。

如何在lucene 4.0中实现ngram tokenizer?

1 个答案:

答案 0 :(得分:7)

使用NGramTokenizer的最简单方法可能是this constructor,只需要读者,最小和最大克大小。您可以将其合并到分析器中,类似于Analyzer docs上的示例。类似的东西:

Analyzer analyzer = new Analyzer() {
 @Override
  protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
    Tokenizer source = new NGramTokenizer(reader, 12, 12);
    TokenStream filter = new LowercaseFilter(source);
    return new TokenStreamComponents(source, filter);
  }
};