Skip to content

Commit 16d593b

Browse files
authored
Set analyzer version in PreBuiltAnalyzerProviderFactory (#31202)
instead of lamda that creates the analyzer
1 parent 56ffe55 commit 16d593b

File tree

2 files changed

+37
-107
lines changed

2 files changed

+37
-107
lines changed

modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java

Lines changed: 25 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -247,108 +247,31 @@ public Map<String, AnalysisProvider<TokenizerFactory>> getTokenizers() {
247247
@Override
248248
public List<PreBuiltAnalyzerProviderFactory> getPreBuiltAnalyzerProviderFactories() {
249249
List<PreBuiltAnalyzerProviderFactory> analyzers = new ArrayList<>();
250-
analyzers.add(new PreBuiltAnalyzerProviderFactory("standard_html_strip", CachingStrategy.LUCENE, version -> {
251-
Analyzer a = new StandardHtmlStripAnalyzer(CharArraySet.EMPTY_SET);
252-
a.setVersion(version.luceneVersion);
253-
return a;
254-
}));
255-
analyzers.add(new PreBuiltAnalyzerProviderFactory("pattern", CachingStrategy.ELASTICSEARCH, version -> {
256-
Analyzer a = new PatternAnalyzer(Regex.compile("\\W+" /*PatternAnalyzer.NON_WORD_PATTERN*/, null), true,
257-
CharArraySet.EMPTY_SET);
258-
a.setVersion(version.luceneVersion);
259-
return a;
260-
}));
261-
analyzers.add(new PreBuiltAnalyzerProviderFactory("snowball", CachingStrategy.LUCENE, version -> {
262-
Analyzer a = new SnowballAnalyzer("English", StopAnalyzer.ENGLISH_STOP_WORDS_SET);
263-
a.setVersion(version.luceneVersion);
264-
return a;
265-
}));
266-
analyzers.add(new PreBuiltAnalyzerProviderFactory("arabic", CachingStrategy.LUCENE, version -> {
267-
Analyzer a = new ArabicAnalyzer();
268-
a.setVersion(version.luceneVersion);
269-
return a;
270-
}));
271-
analyzers.add(new PreBuiltAnalyzerProviderFactory("armenian", CachingStrategy.LUCENE, version -> {
272-
Analyzer a = new ArmenianAnalyzer();
273-
a.setVersion(version.luceneVersion);
274-
return a;
275-
}));
276-
analyzers.add(new PreBuiltAnalyzerProviderFactory("basque", CachingStrategy.LUCENE, version -> {
277-
Analyzer a = new BasqueAnalyzer();
278-
a.setVersion(version.luceneVersion);
279-
return a;
280-
}));
281-
analyzers.add(new PreBuiltAnalyzerProviderFactory("bengali", CachingStrategy.LUCENE, version -> {
282-
Analyzer a = new BengaliAnalyzer();
283-
a.setVersion(version.luceneVersion);
284-
return a;
285-
}));
286-
analyzers.add(new PreBuiltAnalyzerProviderFactory("brazilian", CachingStrategy.LUCENE, version -> {
287-
Analyzer a = new BrazilianAnalyzer();
288-
a.setVersion(version.luceneVersion);
289-
return a;
290-
}));
291-
analyzers.add(new PreBuiltAnalyzerProviderFactory("bulgarian", CachingStrategy.LUCENE, version -> {
292-
Analyzer a = new BulgarianAnalyzer();
293-
a.setVersion(version.luceneVersion);
294-
return a;
295-
}));
296-
analyzers.add(new PreBuiltAnalyzerProviderFactory("catalan", CachingStrategy.LUCENE, version -> {
297-
Analyzer a = new CatalanAnalyzer();
298-
a.setVersion(version.luceneVersion);
299-
return a;
300-
}));
301-
analyzers.add(new PreBuiltAnalyzerProviderFactory("chinese", CachingStrategy.LUCENE, version -> {
302-
// only for old indices, best effort
303-
Analyzer a = new StandardAnalyzer();
304-
a.setVersion(version.luceneVersion);
305-
return a;
306-
}));
307-
analyzers.add(new PreBuiltAnalyzerProviderFactory("cjk", CachingStrategy.LUCENE, version -> {
308-
Analyzer a = new CJKAnalyzer();
309-
a.setVersion(version.luceneVersion);
310-
return a;
311-
}));
312-
analyzers.add(new PreBuiltAnalyzerProviderFactory("czech", CachingStrategy.LUCENE, version -> {
313-
Analyzer a = new CzechAnalyzer();
314-
a.setVersion(version.luceneVersion);
315-
return a;
316-
}));
317-
analyzers.add(new PreBuiltAnalyzerProviderFactory("danish", CachingStrategy.LUCENE, version -> {
318-
Analyzer a = new DanishAnalyzer();
319-
a.setVersion(version.luceneVersion);
320-
return a;
321-
}));
322-
analyzers.add(new PreBuiltAnalyzerProviderFactory("dutch", CachingStrategy.LUCENE, version -> {
323-
Analyzer a = new DutchAnalyzer();
324-
a.setVersion(version.luceneVersion);
325-
return a;
326-
}));
327-
analyzers.add(new PreBuiltAnalyzerProviderFactory("english", CachingStrategy.LUCENE, version -> {
328-
Analyzer a = new EnglishAnalyzer();
329-
a.setVersion(version.luceneVersion);
330-
return a;
331-
}));
332-
analyzers.add(new PreBuiltAnalyzerProviderFactory("finnish", CachingStrategy.LUCENE, version -> {
333-
Analyzer a = new FinnishAnalyzer();
334-
a.setVersion(version.luceneVersion);
335-
return a;
336-
}));
337-
analyzers.add(new PreBuiltAnalyzerProviderFactory("french", CachingStrategy.LUCENE, version -> {
338-
Analyzer a = new FrenchAnalyzer();
339-
a.setVersion(version.luceneVersion);
340-
return a;
341-
}));
342-
analyzers.add(new PreBuiltAnalyzerProviderFactory("galician", CachingStrategy.LUCENE, version -> {
343-
Analyzer a = new GalicianAnalyzer();
344-
a.setVersion(version.luceneVersion);
345-
return a;
346-
}));
347-
analyzers.add(new PreBuiltAnalyzerProviderFactory("german", CachingStrategy.LUCENE, version -> {
348-
Analyzer a = new GermanAnalyzer();
349-
a.setVersion(version.luceneVersion);
350-
return a;
351-
}));
250+
analyzers.add(new PreBuiltAnalyzerProviderFactory("standard_html_strip", CachingStrategy.LUCENE,
251+
() -> new StandardHtmlStripAnalyzer(CharArraySet.EMPTY_SET)));
252+
analyzers.add(new PreBuiltAnalyzerProviderFactory("pattern", CachingStrategy.ELASTICSEARCH,
253+
() -> new PatternAnalyzer(Regex.compile("\\W+" /*PatternAnalyzer.NON_WORD_PATTERN*/, null), true,
254+
CharArraySet.EMPTY_SET)));
255+
analyzers.add(new PreBuiltAnalyzerProviderFactory("snowball", CachingStrategy.LUCENE,
256+
() -> new SnowballAnalyzer("English", StopAnalyzer.ENGLISH_STOP_WORDS_SET)));
257+
analyzers.add(new PreBuiltAnalyzerProviderFactory("arabic", CachingStrategy.LUCENE, ArabicAnalyzer::new));
258+
analyzers.add(new PreBuiltAnalyzerProviderFactory("armenian", CachingStrategy.LUCENE, ArmenianAnalyzer::new));
259+
analyzers.add(new PreBuiltAnalyzerProviderFactory("basque", CachingStrategy.LUCENE, BasqueAnalyzer::new));
260+
analyzers.add(new PreBuiltAnalyzerProviderFactory("bengali", CachingStrategy.LUCENE, BengaliAnalyzer::new));
261+
analyzers.add(new PreBuiltAnalyzerProviderFactory("brazilian", CachingStrategy.LUCENE, BrazilianAnalyzer::new));
262+
analyzers.add(new PreBuiltAnalyzerProviderFactory("bulgarian", CachingStrategy.LUCENE, BulgarianAnalyzer::new));
263+
analyzers.add(new PreBuiltAnalyzerProviderFactory("catalan", CachingStrategy.LUCENE, CatalanAnalyzer::new));
264+
// chinese analyzer: only for old indices, best effort
265+
analyzers.add(new PreBuiltAnalyzerProviderFactory("chinese", CachingStrategy.LUCENE, StandardAnalyzer::new));
266+
analyzers.add(new PreBuiltAnalyzerProviderFactory("cjk", CachingStrategy.LUCENE, CJKAnalyzer::new));
267+
analyzers.add(new PreBuiltAnalyzerProviderFactory("czech", CachingStrategy.LUCENE, CzechAnalyzer::new));
268+
analyzers.add(new PreBuiltAnalyzerProviderFactory("danish", CachingStrategy.LUCENE, DanishAnalyzer::new));
269+
analyzers.add(new PreBuiltAnalyzerProviderFactory("dutch", CachingStrategy.LUCENE, DutchAnalyzer::new));
270+
analyzers.add(new PreBuiltAnalyzerProviderFactory("english", CachingStrategy.LUCENE, EnglishAnalyzer::new));
271+
analyzers.add(new PreBuiltAnalyzerProviderFactory("finnish", CachingStrategy.LUCENE, FinnishAnalyzer::new));
272+
analyzers.add(new PreBuiltAnalyzerProviderFactory("french", CachingStrategy.LUCENE, FrenchAnalyzer::new));
273+
analyzers.add(new PreBuiltAnalyzerProviderFactory("galician", CachingStrategy.LUCENE, GalicianAnalyzer::new));
274+
analyzers.add(new PreBuiltAnalyzerProviderFactory("german", CachingStrategy.LUCENE, GermanAnalyzer::new));
352275
return analyzers;
353276
}
354277

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.Collection;
3434
import java.util.List;
3535
import java.util.function.Function;
36+
import java.util.function.Supplier;
3637
import java.util.stream.Collectors;
3738

3839
public class PreBuiltAnalyzerProviderFactory extends PreConfiguredAnalysisComponent<AnalyzerProvider<?>> implements Closeable {
@@ -46,13 +47,17 @@ public class PreBuiltAnalyzerProviderFactory extends PreConfiguredAnalysisCompon
4647
PreBuiltAnalyzerProviderFactory(String name, PreBuiltAnalyzers preBuiltAnalyzer) {
4748
super(name, new PreBuiltAnalyzersDelegateCache(name, preBuiltAnalyzer));
4849
this.create = preBuiltAnalyzer::getAnalyzer;
49-
current = new PreBuiltAnalyzerProvider(name, AnalyzerScope.INDICES, preBuiltAnalyzer.getAnalyzer(Version.CURRENT));
50+
Analyzer analyzer = preBuiltAnalyzer.getAnalyzer(Version.CURRENT);
51+
analyzer.setVersion(Version.CURRENT.luceneVersion);
52+
current = new PreBuiltAnalyzerProvider(name, AnalyzerScope.INDICES, analyzer);
5053
}
5154

52-
public PreBuiltAnalyzerProviderFactory(String name, PreBuiltCacheFactory.CachingStrategy cache, Function<Version, Analyzer> create) {
55+
public PreBuiltAnalyzerProviderFactory(String name, PreBuiltCacheFactory.CachingStrategy cache, Supplier<Analyzer> create) {
5356
super(name, cache);
54-
this.create = create;
55-
this.current = new PreBuiltAnalyzerProvider(name, AnalyzerScope.INDICES, create.apply(Version.CURRENT));
57+
this.create = version -> create.get();
58+
Analyzer analyzer = create.get();
59+
analyzer.setVersion(Version.CURRENT.luceneVersion);
60+
this.current = new PreBuiltAnalyzerProvider(name, AnalyzerScope.INDICES, analyzer);
5661
}
5762

5863
@Override
@@ -71,7 +76,9 @@ public AnalyzerProvider<?> get(IndexSettings indexSettings,
7176
@Override
7277
protected AnalyzerProvider<?> create(Version version) {
7378
assert Version.CURRENT.equals(version) == false;
74-
return new PreBuiltAnalyzerProvider(getName(), AnalyzerScope.INDICES, create.apply(version));
79+
Analyzer analyzer = create.apply(version);
80+
analyzer.setVersion(version.luceneVersion);
81+
return new PreBuiltAnalyzerProvider(getName(), AnalyzerScope.INDICES, analyzer);
7582
}
7683

7784
@Override

0 commit comments

Comments
 (0)