001package org.xbib.elasticsearch.index.analysis.standardnumber; 002 003import org.apache.lucene.analysis.Analyzer; 004import org.apache.lucene.analysis.TokenStream; 005import org.apache.lucene.analysis.Tokenizer; 006import org.elasticsearch.index.analysis.TokenFilterFactory; 007import org.elasticsearch.index.analysis.TokenizerFactory; 008import org.elasticsearch.index.analysis.UniqueTokenFilterFactory; 009 010import java.io.Reader; 011import java.util.Arrays; 012 013public class StandardNumberAnalyzer extends Analyzer { 014 015 private final TokenizerFactory tokenizerFactory; 016 private final StandardNumberTokenFilterFactory stdnumTokenFilterFactory; 017 private final UniqueTokenFilterFactory uniqueTokenFilterFactory; 018 019 public StandardNumberAnalyzer(TokenizerFactory tokenizerFactory, 020 StandardNumberTokenFilterFactory stdnumTokenFilterFactory, 021 UniqueTokenFilterFactory uniqueTokenFilterFactory) { 022 this.tokenizerFactory = tokenizerFactory; 023 this.stdnumTokenFilterFactory = stdnumTokenFilterFactory; 024 this.uniqueTokenFilterFactory = uniqueTokenFilterFactory; 025 } 026 027 @Override 028 protected TokenStreamComponents createComponents(String fieldName, Reader reader) { 029 Tokenizer tokenizer = tokenizerFactory.create(reader); 030 TokenStream tokenStream = tokenizer; 031 for (TokenFilterFactory tokenFilter : Arrays.asList(stdnumTokenFilterFactory,uniqueTokenFilterFactory)) { 032 tokenStream = tokenFilter.create(tokenStream); 033 } 034 return new TokenStreamComponents(tokenizer, tokenStream); 035 } 036 037}