2

我正在使用不带空格的文本索引大型文本文件。目前我有 ngram 方法来生成长度为 12 的字符串,然后我索引它们。同样的搜索方式,我从用户那里获取字符串,生成 12 的 ngram,然后在构建查询时使用它。在搜索时,请阅读 lucene 中存在的 ngram 标记器。但找不到太多任何例子。

如何在 lucene 4.0 中实现 ngram 标记器?

4

1 回答 1

7

可能最简单的使用方法NGramTokenizer是使用这个构造函数,它只需要一个阅读器,以及最小和最大克大小。您可以将其合并到分析器中,类似于分析器文档中的示例。就像是:

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);
  }
};
于 2013-07-01T15:28:52.347 回答