Java tutorial
/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Author: dong ai hua <dongaihua1201@nhn.com> */ package org.elasticsearch.index.analysis.NGram; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.ngram.NGramTokenFilter; import org.apache.lucene.analysis.standard.StandardTokenizer; import org.apache.lucene.util.Version; import java.io.Reader; public final class NGramAnalyzer extends Analyzer { public static final int DEFAULT_MAX_TOKEN_LENGTH = 255; private int maxTokenLength = DEFAULT_MAX_TOKEN_LENGTH; public void setMaxTokenLength(int length) { maxTokenLength = length; } public int getMaxTokenLength() { return maxTokenLength; } @Override protected Analyzer.TokenStreamComponents createComponents(String fieldName, Reader reader) { final StandardTokenizer source = new StandardTokenizer(Version.LUCENE_43, reader); source.setMaxTokenLength(maxTokenLength); TokenStream result = new NGramTokenFilter(source, 3, 10); return new Analyzer.TokenStreamComponents(source, result); } }