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