package lux.index.analysis;
import java.io.Reader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.core.KeywordTokenizer;
import org.apache.lucene.analysis.core.LowerCaseFilter;
import org.apache.lucene.analysis.miscellaneous.ASCIIFoldingFilter;
import org.apache.lucene.util.Version;
/**
* Used by the XML query parser to handle wildcarded terms.
* TODO: replace with something more general based on the existing analysis chain
* like Solr does with MultiTermAware components when we upgrade to 3.6/4.x. In NodeQueryBuilder,
* we have the main Analyzer; this should have a ctor: WildcardAnalyzer(Analyzer base) ...
*/
public class WildcardAnalyzer extends Analyzer {
@Override
protected TokenStreamComponents createComponents(String fieldName, Reader aReader) {
Tokenizer tokenizer = new KeywordTokenizer(aReader);
TokenStream outer = new LowerCaseFilter(Version.LUCENE_46, new ASCIIFoldingFilter(tokenizer));
return new TokenStreamComponents(tokenizer, outer);
}
}