/** * Creates Lucene43NGramTokenFilter with given min and max n-grams. * @param input {@link org.apache.lucene.analysis.TokenStream} holding the input to be tokenized * @param minGram the smallest n-gram to generate * @param maxGram the largest n-gram to generate */ public Lucene43NGramTokenFilter(TokenStream input, int minGram, int maxGram) { super(new CodepointCountFilter(input, minGram, Integer.MAX_VALUE)); this.charUtils = CharacterUtils.getJava4Instance(); if (minGram < 1) { throw new IllegalArgumentException("minGram must be greater than zero"); } if (minGram > maxGram) { throw new IllegalArgumentException("minGram must not be greater than maxGram"); } this.minGram = minGram; this.maxGram = maxGram; posIncAtt = new PositionIncrementAttribute() { @Override public void setPositionIncrement(int positionIncrement) {} @Override public int getPositionIncrement() { return 0; } }; posLenAtt = new PositionLengthAttribute() { @Override public void setPositionLength(int positionLength) {} @Override public int getPositionLength() { return 0; } }; }