Skip to content

Commit

Permalink
add simplified extension point for plugins to add custom analysis com…
Browse files Browse the repository at this point in the history
…ponents
  • Loading branch information
kimchy committed Apr 9, 2012
1 parent 5348c41 commit cec46d5
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/main/java/org/elasticsearch/index/analysis/AnalysisModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,12 @@ public void processAnalyzer(String name, Class<? extends AnalyzerProvider> analy

private final LinkedList<AnalysisBinderProcessor> processors = Lists.newLinkedList();

private final Map<String, Class<? extends CharFilterFactory>> charFilters = Maps.newHashMap();
private final Map<String, Class<? extends TokenFilterFactory>> tokenFilters = Maps.newHashMap();
private final Map<String, Class<? extends TokenizerFactory>> tokenizers = Maps.newHashMap();
private final Map<String, Class<? extends AnalyzerProvider>> analyzers = Maps.newHashMap();


public AnalysisModule(Settings settings) {
this(settings, null);
}
Expand All @@ -130,6 +136,26 @@ public AnalysisModule addProcessor(AnalysisBinderProcessor processor) {
return this;
}

public AnalysisModule addCharFilter(String name, Class<? extends CharFilterFactory> charFilter) {
charFilters.put(name, charFilter);
return this;
}

public AnalysisModule addTokenFilter(String name, Class<? extends TokenFilterFactory> tokenFilter) {
tokenFilters.put(name, tokenFilter);
return this;
}

public AnalysisModule addTokenizerFactory(String name, Class<? extends TokenizerFactory> tokenizer) {
tokenizers.put(name, tokenizer);
return this;
}

public AnalysisModule addAnalyzer(String name, Class<? extends AnalyzerProvider> analyzer) {
analyzers.put(name, analyzer);
return this;
}

@Override
protected void configure() {
MapBinder<String, CharFilterFactoryFactory> charFilterBinder
Expand All @@ -141,6 +167,7 @@ protected void configure() {
for (AnalysisBinderProcessor processor : processors) {
processor.processCharFilters(charFiltersBindings);
}
charFiltersBindings.charFilters.putAll(charFilters);

Map<String, Settings> charFiltersSettings = settings.getGroups("index.analysis.char_filter");
for (Map.Entry<String, Settings> entry : charFiltersSettings.entrySet()) {
Expand Down Expand Up @@ -200,6 +227,7 @@ protected void configure() {
for (AnalysisBinderProcessor processor : processors) {
processor.processTokenFilters(tokenFiltersBindings);
}
tokenFiltersBindings.tokenFilters.putAll(tokenFilters);

Map<String, Settings> tokenFiltersSettings = settings.getGroups("index.analysis.filter");
for (Map.Entry<String, Settings> entry : tokenFiltersSettings.entrySet()) {
Expand Down Expand Up @@ -257,6 +285,7 @@ protected void configure() {
for (AnalysisBinderProcessor processor : processors) {
processor.processTokenizers(tokenizersBindings);
}
tokenizersBindings.tokenizers.putAll(tokenizers);

Map<String, Settings> tokenizersSettings = settings.getGroups("index.analysis.tokenizer");
for (Map.Entry<String, Settings> entry : tokenizersSettings.entrySet()) {
Expand Down Expand Up @@ -315,6 +344,7 @@ protected void configure() {
for (AnalysisBinderProcessor processor : processors) {
processor.processAnalyzers(analyzersBindings);
}
analyzersBindings.analyzers.putAll(analyzers);

Map<String, Settings> analyzersSettings = settings.getGroups("index.analysis.analyzer");
for (Map.Entry<String, Settings> entry : analyzersSettings.entrySet()) {
Expand Down

0 comments on commit cec46d5

Please sign in to comment.