mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-11-03 20:19:31 +00:00 
			
		
		
		
	Fix Search Indexes: Normalize display name to be lowercase, such that upper or lowercase searches can work (#10611)
* Fix Search Indexes: Normalize display name to be lowercase, such that upper or lowercase searches can work * Fix Search Indexes: Normalize display name to be lowercase, such that upper or lowercase searches can work
This commit is contained in:
		
							parent
							
								
									4084d3b0d5
								
							
						
					
					
						commit
						a49b2b501a
					
				@ -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("<span class=\"text-highlighter\">");
 | 
			
		||||
    hb.postTags("</span>");
 | 
			
		||||
    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("<span class=\"text-highlighter\">");
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
 | 
			
		||||
@ -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",
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,10 @@
 | 
			
		||||
        "om_ngram": {
 | 
			
		||||
          "tokenizer": "ngram",
 | 
			
		||||
          "min_gram": 1,
 | 
			
		||||
          "max_gram": 2
 | 
			
		||||
          "max_gram": 2,
 | 
			
		||||
          "filter": [
 | 
			
		||||
            "lowercase"
 | 
			
		||||
          ]
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "filter": {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user