Remove PrefixAnalyzer, because it is no longer used.
This commit is contained in:
parent
9ec1fc7b02
commit
e333955557
|
@ -1,129 +0,0 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch 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.
|
||||
*/
|
||||
|
||||
package org.apache.lucene.analysis;
|
||||
|
||||
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
|
||||
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
|
||||
/**
|
||||
* This {@link Analyzer} wraps another analyzer and adds a set of prefixes to the
|
||||
* underlying TokenStream. While these prefixes are iterated the position attribute
|
||||
* will not be incremented. Also each prefix will be separated from the other tokens
|
||||
* by a separator character.
|
||||
* NOTE: The sequence of prefixes needs to be not empty
|
||||
*/
|
||||
public class PrefixAnalyzer extends Analyzer {
|
||||
|
||||
private final char separator;
|
||||
private final Iterable<? extends CharSequence> prefix;
|
||||
private final Analyzer analyzer;
|
||||
|
||||
/**
|
||||
* Create a new {@link PrefixAnalyzer}. The separator will be set to the DEFAULT_SEPARATOR.
|
||||
*
|
||||
* @param analyzer {@link Analyzer} to wrap
|
||||
* @param prefix Single prefix
|
||||
*/
|
||||
public PrefixAnalyzer(Analyzer analyzer, char separator, CharSequence prefix) {
|
||||
this(analyzer, separator, Collections.singleton(prefix));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@link PrefixAnalyzer}. The separator will be set to the DEFAULT_SEPARATOR.
|
||||
*
|
||||
* @param analyzer {@link Analyzer} to wrap
|
||||
* @param prefix {@link Iterable} of {@link CharSequence} which keeps all prefixes
|
||||
*/
|
||||
public PrefixAnalyzer(Analyzer analyzer, char separator, Iterable<? extends CharSequence> prefix) {
|
||||
super();
|
||||
this.analyzer = analyzer;
|
||||
this.prefix = prefix;
|
||||
this.separator = separator;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TokenStreamComponents createComponents(String fieldName) {
|
||||
TokenStreamComponents createComponents = analyzer.createComponents(fieldName);
|
||||
TokenStream stream = new PrefixTokenFilter(createComponents.getTokenStream(), separator, prefix);
|
||||
TokenStreamComponents tsc = new TokenStreamComponents(createComponents.getTokenizer(), stream);
|
||||
return tsc;
|
||||
}
|
||||
|
||||
/**
|
||||
* The {@link PrefixTokenFilter} wraps a {@link TokenStream} and adds a set
|
||||
* prefixes ahead. The position attribute will not be incremented for the prefixes.
|
||||
*/
|
||||
public static final class PrefixTokenFilter extends TokenFilter {
|
||||
|
||||
private final char separator;
|
||||
private final CharTermAttribute termAttr = addAttribute(CharTermAttribute.class);
|
||||
private final PositionIncrementAttribute posAttr = addAttribute(PositionIncrementAttribute.class);
|
||||
private final Iterable<? extends CharSequence> prefixes;
|
||||
|
||||
private Iterator<? extends CharSequence> currentPrefix;
|
||||
|
||||
/**
|
||||
* Create a new {@link PrefixTokenFilter}. The separator will be set to the DEFAULT_SEPARATOR.
|
||||
*
|
||||
* @param input {@link TokenStream} to wrap
|
||||
* @param separator Character used separate prefixes from other tokens
|
||||
* @param prefixes {@link Iterable} of {@link CharSequence} which keeps all prefixes
|
||||
*/
|
||||
public PrefixTokenFilter(TokenStream input, char separator, Iterable<? extends CharSequence> prefixes) {
|
||||
super(input);
|
||||
this.prefixes = prefixes;
|
||||
this.currentPrefix = null;
|
||||
this.separator = separator;
|
||||
if (prefixes == null || !prefixes.iterator().hasNext()) {
|
||||
throw new IllegalArgumentException("one or more prefixes needed");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean incrementToken() throws IOException {
|
||||
if (currentPrefix != null) {
|
||||
if (!currentPrefix.hasNext()) {
|
||||
return input.incrementToken();
|
||||
} else {
|
||||
posAttr.setPositionIncrement(0);
|
||||
}
|
||||
} else {
|
||||
currentPrefix = prefixes.iterator();
|
||||
termAttr.setEmpty();
|
||||
posAttr.setPositionIncrement(1);
|
||||
assert (currentPrefix.hasNext()) : "one or more prefixes needed";
|
||||
}
|
||||
termAttr.setEmpty();
|
||||
termAttr.append(currentPrefix.next());
|
||||
termAttr.append(separator);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() throws IOException {
|
||||
super.reset();
|
||||
currentPrefix = null;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue