2
我正在編制帶有無空格文本的大文本文件索引。目前我有ngram方法來生成長度爲12的字符串,然後我索引它們。同樣的方法來搜索,我從用戶生成的字符串中得到12個字符,然後用它來構建查詢。在搜索時,閱讀有關lucene中的ngram tokenizer。但是找不到任何例子。如何在lucene 4.0中使用ngram tokenizer?
如何在lucene 4.0中實現ngram tokenizer?
我正在編制帶有無空格文本的大文本文件索引。目前我有ngram方法來生成長度爲12的字符串,然後我索引它們。同樣的方法來搜索,我從用戶生成的字符串中得到12個字符,然後用它來構建查詢。在搜索時,閱讀有關lucene中的ngram tokenizer。但是找不到任何例子。如何在lucene 4.0中使用ngram tokenizer?
如何在lucene 4.0中實現ngram tokenizer?
也許使用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);
}
};
感謝您的回覆。 – Balaram26
嗨,在這種方法中,如何讓tokenstream打印生成的ngram標記? – Balaram26
你可以打印[reflectAsString](http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/util/AttributeSource.html#reflectAsString(boolean))的輸出,它應該提供良好的調試信息在流中的當前令牌上。 – femtoRgon