@@ -77,7 +77,9 @@ public static class Builder extends FieldMapper.Builder {
7777
7878 private final Parameter <Boolean > store = Parameter .storeParam (m -> builder (m ).store .getValue (), false );
7979
80- final TextParams .Analyzers analyzers ;
80+ final TextParams .AnalyzerParameters analyzers ;
81+ final IndexAnalyzers indexAnalyzers ;
82+
8183 final Parameter <SimilarityProvider > similarity = TextParams .similarity (m -> builder (m ).similarity .getValue ());
8284
8385 final Parameter <String > indexOptions = TextParams .textIndexOptions (m -> builder (m ).indexOptions .getValue ());
@@ -91,10 +93,9 @@ public static class Builder extends FieldMapper.Builder {
9193 public Builder (String name , Version indexCreatedVersion , IndexAnalyzers indexAnalyzers ) {
9294 super (name );
9395 this .indexCreatedVersion = indexCreatedVersion ;
94- this .analyzers = new TextParams .Analyzers (
95- indexAnalyzers ,
96- m -> builder (m ).analyzers .getIndexAnalyzer (),
97- m -> builder (m ).analyzers .positionIncrementGap .getValue (),
96+ this .indexAnalyzers = indexAnalyzers ;
97+ this .analyzers = new TextParams .AnalyzerParameters (
98+ m -> ((AnnotatedTextFieldMapper ) m ).analyzerConfiguration ,
9899 indexCreatedVersion
99100 );
100101 }
@@ -114,12 +115,12 @@ protected Parameter<?>[] getParameters() {
114115 meta };
115116 }
116117
117- private AnnotatedTextFieldType buildFieldType (FieldType fieldType , MapperBuilderContext context ) {
118+ private AnnotatedTextFieldType buildFieldType (FieldType fieldType , MapperBuilderContext context , TextParams . Analyzers analyzers ) {
118119 TextSearchInfo tsi = new TextSearchInfo (
119120 fieldType ,
120121 similarity .get (),
121- wrapAnalyzer (analyzers .getSearchAnalyzer ()),
122- wrapAnalyzer (analyzers .getSearchQuoteAnalyzer ())
122+ wrapAnalyzer (analyzers .searchAnalyzer ()),
123+ wrapAnalyzer (analyzers .searchQuoteAnalyzer ())
123124 );
124125 return new AnnotatedTextFieldType (
125126 context .buildFullName (name ),
@@ -132,11 +133,12 @@ private AnnotatedTextFieldType buildFieldType(FieldType fieldType, MapperBuilder
132133
133134 @ Override
134135 public AnnotatedTextFieldMapper build (MapperBuilderContext context ) {
136+ TextParams .Analyzers analyzers = this .analyzers .buildAnalyzers (indexAnalyzers );
135137 FieldType fieldType = TextParams .buildFieldType (() -> true , store , indexOptions , norms , termVectors );
136138 if (fieldType .indexOptions () == IndexOptions .NONE ) {
137139 throw new IllegalArgumentException ("[" + CONTENT_TYPE + "] fields must be indexed" );
138140 }
139- if (analyzers .positionIncrementGap .isConfigured ()) {
141+ if (this . analyzers .positionIncrementGap .isConfigured ()) {
140142 if (fieldType .indexOptions ().compareTo (IndexOptions .DOCS_AND_FREQS_AND_POSITIONS ) < 0 ) {
141143 throw new IllegalArgumentException (
142144 "Cannot set position_increment_gap on field [" + name + "] without positions enabled"
@@ -146,9 +148,10 @@ public AnnotatedTextFieldMapper build(MapperBuilderContext context) {
146148 return new AnnotatedTextFieldMapper (
147149 name ,
148150 fieldType ,
149- buildFieldType (fieldType , context ),
151+ buildFieldType (fieldType , context , analyzers ),
150152 multiFieldsBuilder .build (this , context ),
151153 copyTo .build (),
154+ analyzers ,
152155 this
153156 );
154157 }
@@ -494,6 +497,7 @@ public String typeName() {
494497 }
495498
496499 private final FieldType fieldType ;
500+ private final TextParams .AnalyzerConfiguration analyzerConfiguration ;
497501 private final Builder builder ;
498502
499503 private final NamedAnalyzer indexAnalyzer ;
@@ -504,13 +508,15 @@ protected AnnotatedTextFieldMapper(
504508 AnnotatedTextFieldType mappedFieldType ,
505509 MultiFields multiFields ,
506510 CopyTo copyTo ,
511+ TextParams .Analyzers analyzers ,
507512 Builder builder
508513 ) {
509514 super (simpleName , mappedFieldType , multiFields , copyTo );
510515 assert fieldType .tokenized ();
511516 this .fieldType = fieldType ;
512517 this .builder = builder ;
513- this .indexAnalyzer = wrapAnalyzer (builder .analyzers .getIndexAnalyzer ());
518+ this .indexAnalyzer = wrapAnalyzer (analyzers .indexAnalyzer ());
519+ this .analyzerConfiguration = analyzers .configuration ();
514520 }
515521
516522 @ Override
@@ -542,6 +548,6 @@ protected String contentType() {
542548
543549 @ Override
544550 public FieldMapper .Builder getMergeBuilder () {
545- return new Builder (simpleName (), builder .indexCreatedVersion , builder .analyzers . indexAnalyzers ).init (this );
551+ return new Builder (simpleName (), builder .indexCreatedVersion , builder .indexAnalyzers ).init (this );
546552 }
547553}
0 commit comments