Rework similarities to use lucene's PerFieldSimilarityWrapper on MapperService #57053
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Similarity providers for text fields are currently held directly on MappedFieldType,
and accessing them requires both a MapperService and a SimilarityService. This
makes things unnecessarily complicated (for example, Mapper.ParserContext needs
to hold references to both), and clutters the field type interface with
a field that only makes sense for text-based mappers.
This PR refactors things so that the MapperService is responsible for providing a
Similarity for an index, using lucene's PerFieldSimilarityWrapper to make field
configurations possible. Similarities for text fields are collected by visiting all
FieldMappers after a merge, and combining them appropriately.