Skip to content

Commit

Permalink
Search analyzer should default to configured index analyzer over defa…
Browse files Browse the repository at this point in the history
…ult (#73359)

When a search or search_quote analyzer on a text mapper is not defined,
we fallback to a configured default search/search_quote analyzer if it
exists. However, if an index analyzer has been configured on the mapper
then we should first fall back to that.

Fixes #73333
  • Loading branch information
romseygeek committed May 26, 2021
1 parent 76088da commit 1b060a2
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
Expand Up @@ -45,9 +45,11 @@ public Analyzers(IndexAnalyzers indexAnalyzers,
this.searchAnalyzer
= Parameter.analyzerParam("search_analyzer", true,
m -> m.fieldType().getTextSearchInfo().getSearchAnalyzer(), () -> {
NamedAnalyzer defaultAnalyzer = indexAnalyzers.get(AnalysisRegistry.DEFAULT_SEARCH_ANALYZER_NAME);
if (defaultAnalyzer != null) {
return defaultAnalyzer;
if (indexAnalyzer.isConfigured() == false) {
NamedAnalyzer defaultAnalyzer = indexAnalyzers.get(AnalysisRegistry.DEFAULT_SEARCH_ANALYZER_NAME);
if (defaultAnalyzer != null) {
return defaultAnalyzer;
}
}
return indexAnalyzer.get();
})
Expand All @@ -56,9 +58,11 @@ public Analyzers(IndexAnalyzers indexAnalyzers,
this.searchQuoteAnalyzer
= Parameter.analyzerParam("search_quote_analyzer", true,
m -> m.fieldType().getTextSearchInfo().getSearchQuoteAnalyzer(), () -> {
NamedAnalyzer defaultAnalyzer = indexAnalyzers.get(AnalysisRegistry.DEFAULT_SEARCH_QUOTED_ANALYZER_NAME);
if (defaultAnalyzer != null) {
return defaultAnalyzer;
if (searchAnalyzer.isConfigured() == false && indexAnalyzer.isConfigured() == false) {
NamedAnalyzer defaultAnalyzer = indexAnalyzers.get(AnalysisRegistry.DEFAULT_SEARCH_QUOTED_ANALYZER_NAME);
if (defaultAnalyzer != null) {
return defaultAnalyzer;
}
}
return searchAnalyzer.get();
})
Expand Down
Expand Up @@ -69,6 +69,12 @@ public void testDefaultSearchAnalyzer() throws IOException {
MappedFieldType ft = ms.fieldType("field");
assertEquals("configured", ft.getTextSearchInfo().getSearchAnalyzer().name());
}
{
setDefaultSearchAnalyzer = true;
MapperService ms = createMapperService(fieldMapping(b -> b.field("type", "text").field("analyzer", "configured")));
MappedFieldType ft = ms.fieldType("field");
assertEquals("configured", ft.getTextSearchInfo().getSearchAnalyzer().name());
}

}

Expand Down Expand Up @@ -133,6 +139,20 @@ public void testDefaultSearchQuoteAnalyzer() throws IOException {
MappedFieldType ft = ms.fieldType("field");
assertEquals("configured", ft.getTextSearchInfo().getSearchQuoteAnalyzer().name());
}
{
setDefaultSearchQuoteAnalyzer = true;
setDefaultSearchAnalyzer = false;
MapperService ms = createMapperService(fieldMapping(b -> b.field("type", "text").field("analyzer", "configured")));
MappedFieldType ft = ms.fieldType("field");
assertEquals("configured", ft.getTextSearchInfo().getSearchQuoteAnalyzer().name());
}
{
setDefaultSearchQuoteAnalyzer = true;
setDefaultSearchAnalyzer = false;
MapperService ms = createMapperService(fieldMapping(b -> b.field("type", "text").field("search_analyzer", "configured")));
MappedFieldType ft = ms.fieldType("field");
assertEquals("configured", ft.getTextSearchInfo().getSearchQuoteAnalyzer().name());
}
}

}

0 comments on commit 1b060a2

Please sign in to comment.