Skip to content

Commit eae870f

Browse files
author
Christoph Büscher
committed
Pull out interface that allows access to AnalyzerComponents
1 parent 2557dc5 commit eae870f

File tree

10 files changed

+45
-52
lines changed

10 files changed

+45
-52
lines changed

modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/SynonymAnalyzerIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919

2020
package org.elasticsearch.analysis.common;
2121

22-
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
23-
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse.AnalyzeToken;
22+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction.AnalyzeToken;
23+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction.Response;
2424
import org.elasticsearch.action.admin.indices.reloadanalyzer.ReloadAnalyzersResponse;
2525
import org.elasticsearch.action.search.SearchResponse;
2626
import org.elasticsearch.common.settings.Settings;
@@ -90,7 +90,7 @@ public void testSynonymsUpdateable() throws FileNotFoundException, IOException,
9090
assertHitCount(response, 1L);
9191
response = client().prepareSearch("test").setQuery(QueryBuilders.matchQuery("field", "buzz")).get();
9292
assertHitCount(response, 0L);
93-
AnalyzeResponse analyzeResponse = client().admin().indices().prepareAnalyze("test", "foo").setAnalyzer("my_synonym_analyzer").get();
93+
Response analyzeResponse = client().admin().indices().prepareAnalyze("test", "foo").setAnalyzer("my_synonym_analyzer").get();
9494
assertEquals(2, analyzeResponse.getTokens().size());
9595
assertEquals("foo", analyzeResponse.getTokens().get(0).getTerm());
9696
assertEquals("baz", analyzeResponse.getTokens().get(1).getTerm());

modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/SynonymAnalyzerTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919

2020
package org.elasticsearch.analysis.common;
2121

22-
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
23-
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse.AnalyzeToken;
22+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction.AnalyzeToken;
23+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction.Response;
2424
import org.elasticsearch.action.search.SearchResponse;
2525
import org.elasticsearch.common.settings.Settings;
2626
import org.elasticsearch.index.query.QueryBuilders;
@@ -83,7 +83,7 @@ public void testSynonymsUpdateable() throws FileNotFoundException, IOException {
8383
assertHitCount(response, 1L);
8484
response = client().prepareSearch("test").setQuery(QueryBuilders.matchQuery("field", "buzz")).get();
8585
assertHitCount(response, 0L);
86-
AnalyzeResponse analyzeResponse = client().admin().indices().prepareAnalyze("test", "foo").setAnalyzer("my_synonym_analyzer").get();
86+
Response analyzeResponse = client().admin().indices().prepareAnalyze("test", "foo").setAnalyzer("my_synonym_analyzer").get();
8787
assertEquals(2, analyzeResponse.getTokens().size());
8888
assertEquals("foo", analyzeResponse.getTokens().get(0).getTerm());
8989
assertEquals("baz", analyzeResponse.getTokens().get(1).getTerm());

server/src/main/java/org/elasticsearch/action/admin/indices/analyze/TransportAnalyzeAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,8 @@ private static AnalyzeAction.DetailAnalyzeResponse detailAnalyze(AnalyzeAction.R
387387
tokenFilterFactories[tokenFilterIndex].name(), tokenFiltersTokenListCreator[tokenFilterIndex].getArrayTokens());
388388
}
389389
}
390-
detailResponse = new AnalyzeAction.DetailAnalyzeResponse(charFilteredLists, new AnalyzeAction.AnalyzeTokenList(
391-
tokenizerName, tokenizerTokenListCreator.getArrayTokens()), tokenFilterLists);
390+
detailResponse = new AnalyzeAction.DetailAnalyzeResponse(charFilteredLists,
391+
new AnalyzeAction.AnalyzeTokenList(tokenizerName, tokenizerTokenListCreator.getArrayTokens()), tokenFilterLists);
392392
} else {
393393
String name;
394394
if (analyzer instanceof NamedAnalyzer) {

server/src/main/java/org/elasticsearch/index/analysis/AnalyzerComponents.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public final class AnalyzerComponents {
3636
private final TokenFilterFactory[] tokenFilters;
3737
private final AnalysisMode analysisMode;
3838

39-
private AnalyzerComponents(String tokenizerName, TokenizerFactory tokenizerFactory, CharFilterFactory[] charFilters,
39+
AnalyzerComponents(String tokenizerName, TokenizerFactory tokenizerFactory, CharFilterFactory[] charFilters,
4040
TokenFilterFactory[] tokenFilters) {
4141
this.tokenizerName = tokenizerName;
4242
this.tokenizerFactory = tokenizerFactory;

server/src/main/java/org/elasticsearch/index/analysis/TokenFilterComposite.java renamed to server/src/main/java/org/elasticsearch/index/analysis/AnalyzerComponentsProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
/**
2323
* Analyzers that provide access to their token filters should implement this
2424
*/
25-
public interface TokenFilterComposite {
25+
public interface AnalyzerComponentsProvider {
2626

27-
TokenFilterFactory[] tokenFilters();
27+
AnalyzerComponents getComponents();
2828
}

server/src/main/java/org/elasticsearch/index/analysis/CustomAnalyzer.java

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,9 @@
2525

2626
import java.io.Reader;
2727

28-
public final class CustomAnalyzer extends Analyzer implements TokenFilterComposite {
29-
30-
private final String tokenizerName;
31-
private final TokenizerFactory tokenizerFactory;
32-
33-
private final CharFilterFactory[] charFilters;
34-
35-
private final TokenFilterFactory[] tokenFilters;
28+
public final class CustomAnalyzer extends Analyzer implements AnalyzerComponentsProvider {
3629

30+
private final AnalyzerComponents components;
3731
private final int positionIncrementGap;
3832
private final int offsetGap;
3933
private final AnalysisMode analysisMode;
@@ -45,10 +39,7 @@ public CustomAnalyzer(String tokenizerName, TokenizerFactory tokenizerFactory, C
4539

4640
public CustomAnalyzer(String tokenizerName, TokenizerFactory tokenizerFactory, CharFilterFactory[] charFilters,
4741
TokenFilterFactory[] tokenFilters, int positionIncrementGap, int offsetGap) {
48-
this.tokenizerName = tokenizerName;
49-
this.tokenizerFactory = tokenizerFactory;
50-
this.charFilters = charFilters;
51-
this.tokenFilters = tokenFilters;
42+
this.components = new AnalyzerComponents(tokenizerName, tokenizerFactory, charFilters, tokenFilters);
5243
this.positionIncrementGap = positionIncrementGap;
5344
this.offsetGap = offsetGap;
5445
// merge and transfer token filter analysis modes with analyzer
@@ -63,19 +54,19 @@ public CustomAnalyzer(String tokenizerName, TokenizerFactory tokenizerFactory, C
6354
* The name of the tokenizer as configured by the user.
6455
*/
6556
public String getTokenizerName() {
66-
return tokenizerName;
57+
return this.components.getTokenizerName();
6758
}
6859

6960
public TokenizerFactory tokenizerFactory() {
70-
return tokenizerFactory;
61+
return this.components.getTokenizerFactory();
7162
}
7263

7364
public TokenFilterFactory[] tokenFilters() {
74-
return tokenFilters;
65+
return this.components.getTokenFilters();
7566
}
7667

7768
public CharFilterFactory[] charFilters() {
78-
return charFilters;
69+
return this.components.getCharFilters();
7970
}
8071

8172
@Override
@@ -95,18 +86,24 @@ public AnalysisMode getAnalysisMode() {
9586
return this.analysisMode;
9687
}
9788

89+
@Override
90+
public AnalyzerComponents getComponents() {
91+
return this.components;
92+
}
93+
9894
@Override
9995
protected TokenStreamComponents createComponents(String fieldName) {
100-
Tokenizer tokenizer = tokenizerFactory.create();
96+
Tokenizer tokenizer = this.tokenizerFactory().create();
10197
TokenStream tokenStream = tokenizer;
102-
for (TokenFilterFactory tokenFilter : tokenFilters) {
98+
for (TokenFilterFactory tokenFilter : tokenFilters()) {
10399
tokenStream = tokenFilter.create(tokenStream);
104100
}
105101
return new TokenStreamComponents(tokenizer, tokenStream);
106102
}
107103

108104
@Override
109105
protected Reader initReader(String fieldName, Reader reader) {
106+
CharFilterFactory[] charFilters = charFilters();
110107
if (charFilters != null && charFilters.length > 0) {
111108
for (CharFilterFactory charFilter : charFilters) {
112109
reader = charFilter.create(reader);
@@ -117,18 +114,18 @@ protected Reader initReader(String fieldName, Reader reader) {
117114

118115
@Override
119116
protected Reader initReaderForNormalization(String fieldName, Reader reader) {
120-
for (CharFilterFactory charFilter : charFilters) {
121-
reader = charFilter.normalize(reader);
122-
}
123-
return reader;
117+
for (CharFilterFactory charFilter : charFilters()) {
118+
reader = charFilter.normalize(reader);
119+
}
120+
return reader;
124121
}
125122

126123
@Override
127124
protected TokenStream normalize(String fieldName, TokenStream in) {
128-
TokenStream result = in;
129-
for (TokenFilterFactory filter : tokenFilters) {
130-
result = filter.normalize(result);
131-
}
132-
return result;
125+
TokenStream result = in;
126+
for (TokenFilterFactory filter : tokenFilters()) {
127+
result = filter.normalize(result);
128+
}
129+
return result;
133130
}
134131
}

server/src/main/java/org/elasticsearch/index/analysis/NamedAnalyzer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ public void checkAllowedInMode(AnalysisMode mode) {
112112
return; // everything allowed if this analyzer is in ALL mode
113113
}
114114
if (this.getAnalysisMode() != mode) {
115-
if (analyzer instanceof TokenFilterComposite) {
116-
TokenFilterFactory[] tokenFilters = ((TokenFilterComposite) analyzer).tokenFilters();
115+
if (analyzer instanceof AnalyzerComponentsProvider) {
116+
TokenFilterFactory[] tokenFilters = ((AnalyzerComponentsProvider) analyzer).getComponents().getTokenFilters();
117117
List<String> offendingFilters = new ArrayList<>();
118118
for (TokenFilterFactory tokenFilter : tokenFilters) {
119119
if (tokenFilter.getAnalysisMode() != mode) {

server/src/main/java/org/elasticsearch/index/analysis/ReloadableCustomAnalyzer.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import java.io.Reader;
2929
import java.util.Map;
3030

31-
public final class ReloadableCustomAnalyzer extends Analyzer implements TokenFilterComposite {
31+
public final class ReloadableCustomAnalyzer extends Analyzer implements AnalyzerComponentsProvider {
3232

3333
private volatile AnalyzerComponents components;
3434

@@ -69,15 +69,11 @@ public void setReusableComponents(Analyzer analyzer, String fieldName, TokenStre
6969
this.offsetGap = offsetGap;
7070
}
7171

72+
@Override
7273
public AnalyzerComponents getComponents() {
7374
return this.components;
7475
}
7576

76-
@Override
77-
public TokenFilterFactory[] tokenFilters() {
78-
return this.components.getTokenFilters();
79-
}
80-
8177
@Override
8278
public int getPositionIncrementGap(String fieldName) {
8379
return this.positionIncrementGap;

server/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/FragmentBuilderHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import org.apache.lucene.search.vectorhighlight.FieldFragList.WeightedFragInfo.SubInfo;
2727
import org.apache.lucene.search.vectorhighlight.FragmentsBuilder;
2828
import org.apache.lucene.util.CollectionUtil;
29+
import org.elasticsearch.index.analysis.AnalyzerComponentsProvider;
2930
import org.elasticsearch.index.analysis.NamedAnalyzer;
30-
import org.elasticsearch.index.analysis.TokenFilterComposite;
3131
import org.elasticsearch.index.analysis.TokenFilterFactory;
3232
import org.elasticsearch.index.mapper.MappedFieldType;
3333

@@ -81,8 +81,8 @@ private static boolean containsBrokenAnalysis(Analyzer analyzer) {
8181
if (analyzer instanceof NamedAnalyzer) {
8282
analyzer = ((NamedAnalyzer) analyzer).analyzer();
8383
}
84-
if (analyzer instanceof TokenFilterComposite) {
85-
final TokenFilterFactory[] tokenFilters = ((TokenFilterComposite) analyzer).tokenFilters();
84+
if (analyzer instanceof AnalyzerComponentsProvider) {
85+
final TokenFilterFactory[] tokenFilters = ((AnalyzerComponentsProvider) analyzer).getComponents().getTokenFilters();
8686
for (TokenFilterFactory tokenFilterFactory : tokenFilters) {
8787
if (tokenFilterFactory.breaksFastVectorHighlighter()) {
8888
return true;

server/src/main/java/org/elasticsearch/search/suggest/phrase/PhraseSuggestionBuilder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
import org.elasticsearch.common.xcontent.XContentBuilder;
3232
import org.elasticsearch.common.xcontent.XContentParser;
3333
import org.elasticsearch.common.xcontent.XContentParser.Token;
34+
import org.elasticsearch.index.analysis.AnalyzerComponentsProvider;
3435
import org.elasticsearch.index.analysis.NamedAnalyzer;
3536
import org.elasticsearch.index.analysis.ShingleTokenFilterFactory;
36-
import org.elasticsearch.index.analysis.TokenFilterComposite;
3737
import org.elasticsearch.index.analysis.TokenFilterFactory;
3838
import org.elasticsearch.index.mapper.MapperService;
3939
import org.elasticsearch.index.query.QueryShardContext;
@@ -675,8 +675,8 @@ private static ShingleTokenFilterFactory.Factory getShingleFilterFactory(Analyze
675675
if (analyzer instanceof NamedAnalyzer) {
676676
analyzer = ((NamedAnalyzer)analyzer).analyzer();
677677
}
678-
if (analyzer instanceof TokenFilterComposite) {
679-
final TokenFilterFactory[] tokenFilters = ((TokenFilterComposite) analyzer).tokenFilters();
678+
if (analyzer instanceof AnalyzerComponentsProvider) {
679+
final TokenFilterFactory[] tokenFilters = ((AnalyzerComponentsProvider) analyzer).getComponents().getTokenFilters();
680680
for (TokenFilterFactory tokenFilterFactory : tokenFilters) {
681681
if (tokenFilterFactory instanceof ShingleTokenFilterFactory) {
682682
return ((ShingleTokenFilterFactory)tokenFilterFactory).getInnerFactory();

0 commit comments

Comments
 (0)