diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/search/SearchResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/search/SearchResource.java index e5fc0bdd900..4085b7914ef 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/search/SearchResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/search/SearchResource.java @@ -102,6 +102,7 @@ public class SearchResource { private static final Integer MAX_RESULT_HITS = 10000; private static final String NAME_KEYWORD = "name.keyword"; private static final String DISPLAY_NAME = "displayName"; + private static final String FIELD_NAME_NGRAM = "name.ngram"; private static final String DISPLAY_NAME_KEYWORD = "displayName.keyword"; private static final String FIELD_DISPLAY_NAME_NGRAM = "displayName.ngram"; private static final String QUERY = "query"; @@ -551,6 +552,7 @@ public class SearchResource { .field(FIELD_DISPLAY_NAME, 15.0f) .field(FIELD_DISPLAY_NAME_NGRAM) .field(FIELD_NAME, 15.0f) + .field(FIELD_NAME_NGRAM) .field(DISPLAY_NAME_KEYWORD, 25.0f) .field(NAME_KEYWORD, 25.0f) .field(FIELD_DESCRIPTION, 1.0f) @@ -605,6 +607,7 @@ public class SearchResource { .field(FIELD_DISPLAY_NAME, 15.0f) .field(FIELD_DISPLAY_NAME_NGRAM) .field(FIELD_NAME, 15.0f) + .field(FIELD_NAME_NGRAM) .field(DISPLAY_NAME_KEYWORD, 25.0f) .field(NAME_KEYWORD, 25.0f) .field(FIELD_DESCRIPTION, 1.0f) @@ -634,6 +637,7 @@ public class SearchResource { .field(FIELD_DISPLAY_NAME, 15.0f) .field(FIELD_DISPLAY_NAME_NGRAM) .field(FIELD_NAME, 15.0f) + .field(FIELD_NAME_NGRAM) .field(DISPLAY_NAME_KEYWORD, 25.0f) .field(NAME_KEYWORD, 25.0f) .field(FIELD_DESCRIPTION, 1.0f) @@ -839,6 +843,8 @@ public class SearchResource { private SearchSourceBuilder buildGlossaryTermSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query) + .field(FIELD_DISPLAY_NAME, 10.0f) + .field(FIELD_DISPLAY_NAME_NGRAM, 1.0f) .field(FIELD_NAME, 10.0f) .field(NAME_KEYWORD, 10.0f) .field(DISPLAY_NAME_KEYWORD, 10.0f) @@ -855,6 +861,8 @@ public class SearchResource { HighlightBuilder.Field highlightGlossaryName = new HighlightBuilder.Field(FIELD_NAME); highlightGlossaryName.highlighterType(UNIFIED); + HighlightBuilder.Field highlightGlossaryDisplayName = new HighlightBuilder.Field(FIELD_DISPLAY_NAME); + highlightGlossaryDisplayName.highlighterType(UNIFIED); HighlightBuilder.Field highlightDescription = new HighlightBuilder.Field(FIELD_DESCRIPTION); highlightDescription.highlighterType(UNIFIED); HighlightBuilder.Field highlightSynonym = new HighlightBuilder.Field("synonyms"); @@ -862,7 +870,9 @@ public class SearchResource { HighlightBuilder hb = new HighlightBuilder(); hb.field(highlightDescription); hb.field(highlightGlossaryName); + hb.field(highlightGlossaryDisplayName); hb.field(highlightSynonym); + hb.preTags(""); hb.postTags(""); SearchSourceBuilder searchSourceBuilder = @@ -877,15 +887,20 @@ public class SearchResource { QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query) .field(FIELD_NAME, 10.0f) + .field(FIELD_DISPLAY_NAME, 10.0f) + .field(FIELD_DISPLAY_NAME_NGRAM, 1.0f) .field(DESCRIPTION, 3.0f) .defaultOperator(Operator.AND) .fuzziness(Fuzziness.AUTO); HighlightBuilder.Field highlightTagName = new HighlightBuilder.Field(FIELD_NAME); highlightTagName.highlighterType(UNIFIED); + HighlightBuilder.Field highlightTagDisplayName = new HighlightBuilder.Field(FIELD_DISPLAY_NAME); + highlightTagDisplayName.highlighterType(UNIFIED); HighlightBuilder.Field highlightDescription = new HighlightBuilder.Field(FIELD_DESCRIPTION); highlightDescription.highlighterType(UNIFIED); HighlightBuilder hb = new HighlightBuilder(); + hb.field(highlightTagDisplayName); hb.field(highlightDescription); hb.field(highlightTagName); hb.preTags(""); diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_index_mapping.json index 4fb22447741..03f7f07ef24 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_index_mapping.json @@ -21,7 +21,10 @@ "om_ngram": { "tokenizer": "ngram", "min_gram": 1, - "max_gram": 2 + "max_gram": 2, + "filter": [ + "lowercase" + ] } }, "filter": { @@ -39,10 +42,15 @@ }, "name": { "type": "text", + "analyzer": "om_analyzer", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 + }, + "ngram": { + "type": "text", + "analyzer": "om_ngram" } } }, @@ -57,6 +65,10 @@ "ngram": { "type": "text", "analyzer": "om_ngram" + }, + "keyword": { + "type": "keyword", + "ignore_above": 256 } } }, diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/glossary_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/glossary_index_mapping.json index 955c6b12f1d..a86882f0f48 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/glossary_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/glossary_index_mapping.json @@ -21,7 +21,10 @@ "om_ngram": { "tokenizer": "ngram", "min_gram": 1, - "max_gram": 2 + "max_gram": 2, + "filter": [ + "lowercase" + ] } }, "filter": { @@ -38,11 +41,16 @@ "type": "text" }, "name": { - "type": "keyword", + "type": "text", + "analyzer": "om_analyzer", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 + }, + "ngram": { + "type": "text", + "analyzer": "om_ngram" } } }, diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/mlmodel_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/mlmodel_index_mapping.json index f907f53d6d5..a4312d6374f 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/mlmodel_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/mlmodel_index_mapping.json @@ -21,7 +21,10 @@ "om_ngram": { "tokenizer": "ngram", "min_gram": 1, - "max_gram": 2 + "max_gram": 2, + "filter": [ + "lowercase" + ] } }, "filter": { @@ -39,10 +42,15 @@ }, "name": { "type": "text", + "analyzer": "om_analyzer", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 + }, + "ngram": { + "type": "text", + "analyzer": "om_ngram" } } }, @@ -54,6 +62,10 @@ "type": "text", "analyzer": "om_analyzer", "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + }, "ngram": { "type": "text", "analyzer": "om_ngram" diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/pipeline_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/pipeline_index_mapping.json index f0bceadce20..47dc26a00c8 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/pipeline_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/pipeline_index_mapping.json @@ -17,6 +17,14 @@ "lowercase", "om_stemmer" ] + }, + "om_ngram": { + "tokenizer": "ngram", + "min_gram": 1, + "max_gram": 2, + "filter": [ + "lowercase" + ] } }, "filter": { @@ -47,7 +55,17 @@ }, "displayName": { "type": "text", - "analyzer": "om_analyzer" + "analyzer": "om_analyzer", + "fields": { + "ngram": { + "type": "text", + "analyzer": "om_ngram" + }, + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "description": { "type": "text", diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/table_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/table_index_mapping.json index f3f5e6e1b97..4db35d3c177 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/table_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/table_index_mapping.json @@ -21,7 +21,10 @@ "om_ngram": { "tokenizer": "ngram", "min_gram": 1, - "max_gram": 2 + "max_gram": 2, + "filter": [ + "lowercase" + ] } }, "filter": { @@ -39,10 +42,15 @@ }, "name": { "type": "text", + "analyzer": "om_analyzer", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 + }, + "ngram": { + "type": "text", + "analyzer": "om_ngram" } } }, @@ -54,6 +62,10 @@ "type": "text", "analyzer": "om_analyzer", "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + }, "ngram": { "type": "text", "analyzer": "om_ngram" diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/tag_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/tag_index_mapping.json index 2c22f4bff87..b5668efeed8 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/tag_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/tag_index_mapping.json @@ -21,7 +21,10 @@ "om_ngram": { "tokenizer": "ngram", "min_gram": 1, - "max_gram": 2 + "max_gram": 2, + "filter": [ + "lowercase" + ] } }, "filter": { @@ -38,11 +41,16 @@ "type": "text" }, "name": { - "type": "keyword", + "type": "text", + "analyzer": "om_analyzer", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 + }, + "ngram": { + "type": "text", + "analyzer": "om_ngram" } } }, @@ -52,10 +60,15 @@ }, "displayName": { "type": "text", + "analyzer": "om_analyzer", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 + }, + "ngram": { + "type": "text", + "analyzer": "om_ngram" } } }, diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/team_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/team_index_mapping.json index ea3f88eb832..8c1c877a19b 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/team_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/team_index_mapping.json @@ -1,6 +1,6 @@ { "settings": { - "analysis": { + "analysis": { "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -39,10 +39,15 @@ }, "name": { "type": "text", + "analyzer": "om_analyzer", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 + }, + "ngram": { + "type": "text", + "analyzer": "om_ngram" } } }, diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/topic_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/topic_index_mapping.json index 8ef64685384..cbdc7b82adb 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/topic_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/topic_index_mapping.json @@ -21,7 +21,10 @@ "om_ngram": { "tokenizer": "ngram", "min_gram": 1, - "max_gram": 2 + "max_gram": 2, + "filter": [ + "lowercase" + ] } }, "filter": { @@ -39,10 +42,15 @@ }, "name": { "type": "text", + "analyzer": "om_analyzer", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 + }, + "ngram": { + "type": "text", + "analyzer": "om_ngram" } } }, diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/user_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/user_index_mapping.json index e6187f986be..c32cc553d88 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/user_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/user_index_mapping.json @@ -21,7 +21,10 @@ "om_ngram": { "tokenizer": "ngram", "min_gram": 1, - "max_gram": 2 + "max_gram": 2, + "filter": [ + "lowercase" + ] } }, "filter": {