我正在使用不带空格的文本索引大型文本文件。目前我有 ngram 方法来生成长度为 12 的字符串,然后我索引它们。同样的搜索方式,我从用户那里获取字符串,生成 12 的 ngram,然后在构建查询时使用它。在搜索时,请阅读 lucene 中存在的 ngram 标记器。但找不到太多任何例子。
如何在 lucene 4.0 中实现 ngram 标记器?
可能最简单的使用方法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);
}
};