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 5a272ced672..563b5b9d7a3 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 @@ -171,7 +171,13 @@ public class SearchResource { "Fetch search results in hierarchical order of children elements. By default hierarchy is not fetched. Currently only supported for glossary_term_search_index.") @DefaultValue("false") @QueryParam("getHierarchy") - boolean getHierarchy) + boolean getHierarchy, + @Parameter( + description = + "Explain the results of the query. Defaults to false. Only for debugging purposes.") + @DefaultValue("false") + @QueryParam("explain") + boolean explain) throws IOException { if (nullOrEmpty(query)) { @@ -202,6 +208,7 @@ public class SearchResource { .applyDomainFilter( !subjectContext.isAdmin() && subjectContext.hasAnyRole(DOMAIN_ONLY_ACCESS_ROLE)) .searchAfter(searchAfter) + .explain(explain) .build(); return searchRepository.search(request); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/EntityBuilderConstant.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/EntityBuilderConstant.java index 1b8746fbe4b..b9bbdc7d10c 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/EntityBuilderConstant.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/EntityBuilderConstant.java @@ -9,6 +9,9 @@ public class EntityBuilderConstant { public static final String ES_MESSAGE_SCHEMA_FIELD = "messageSchema.schemaFields.name"; public static final String ES_MESSAGE_SCHEMA_FIELD_KEYWORD = "messageSchema.schemaFields.name.keyword"; + public static final String API_RESPONSE_SCHEMA_FIELD = "responseSchema.schemaFields.name"; + public static final String API_RESPONSE_SCHEMA_FIELD_KEYWORD = + "responseSchema.schemaFields.name.keyword"; public static final String ES_TAG_FQN_FIELD = "tags.tagFQN"; public static final String COLUMNS_NAME_KEYWORD = "columns.name.keyword"; diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRequest.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRequest.java index db280ec279c..d1ff2fde246 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRequest.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRequest.java @@ -29,6 +29,7 @@ public class SearchRequest { private final List domains; private final boolean getHierarchy; private final Object[] searchAfter; + private final boolean explain; public SearchRequest(ElasticSearchRequestBuilder builder) { this.query = builder.query; @@ -48,6 +49,7 @@ public class SearchRequest { this.domains = builder.domains; this.applyDomainFilter = builder.applyDomainFilter; this.searchAfter = builder.searchAfter; + this.explain = builder.explain; } // Builder class for ElasticSearchRequest @@ -70,6 +72,7 @@ public class SearchRequest { private boolean applyDomainFilter; private List domains; private Object[] searchAfter; + private boolean explain; public ElasticSearchRequestBuilder(String query, int size, String index) { this.query = query; @@ -153,6 +156,11 @@ public class SearchRequest { return this; } + public ElasticSearchRequestBuilder explain(boolean explain) { + this.explain = explain; + return this; + } + public SearchRequest build() { return new SearchRequest(this); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchClient.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchClient.java index fac645e2ca7..ebf75ee5c76 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchClient.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchClient.java @@ -13,6 +13,8 @@ import static org.openmetadata.service.Entity.GLOSSARY_TERM; import static org.openmetadata.service.Entity.QUERY; import static org.openmetadata.service.Entity.RAW_COST_ANALYSIS_REPORT_DATA; import static org.openmetadata.service.exception.CatalogGenericExceptionMapper.getResponse; +import static org.openmetadata.service.search.EntityBuilderConstant.API_RESPONSE_SCHEMA_FIELD; +import static org.openmetadata.service.search.EntityBuilderConstant.API_RESPONSE_SCHEMA_FIELD_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.COLUMNS_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.DATA_MODEL_COLUMNS_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.DOMAIN_DISPLAY_NAME_KEYWORD; @@ -173,6 +175,7 @@ import org.openmetadata.service.search.elasticsearch.dataInsightAggregators.Elas import org.openmetadata.service.search.elasticsearch.dataInsightAggregators.ElasticSearchMostViewedEntitiesAggregator; import org.openmetadata.service.search.elasticsearch.dataInsightAggregators.ElasticSearchPageViewsByEntitiesAggregator; import org.openmetadata.service.search.elasticsearch.dataInsightAggregators.ElasticSearchUnusedAssetsAggregator; +import org.openmetadata.service.search.indexes.APIEndpointIndex; import org.openmetadata.service.search.indexes.ContainerIndex; import org.openmetadata.service.search.indexes.DashboardDataModelIndex; import org.openmetadata.service.search.indexes.DashboardIndex; @@ -1126,42 +1129,28 @@ public class ElasticSearchClient implements SearchClient { return jsonResponse.getJsonObject("aggregations"); } - private static FunctionScoreQueryBuilder boostScore( - QueryStringQueryBuilder queryBuilder, String query) { - FunctionScoreQueryBuilder.FilterFunctionBuilder displayNameBoost = - new FunctionScoreQueryBuilder.FilterFunctionBuilder( - QueryBuilders.existsQuery("displayName.keyword"), // If displayName exists - ScoreFunctionBuilders.weightFactorFunction(10.0f)); // Give it a high weight - - FunctionScoreQueryBuilder.FilterFunctionBuilder nameBoost = - new FunctionScoreQueryBuilder.FilterFunctionBuilder( - QueryBuilders.boolQuery() - .mustNot( - QueryBuilders.existsQuery( - "displayName.keyword")) // Only use name if displayName doesn't exist - .must(QueryBuilders.matchQuery("name.keyword", query)), - ScoreFunctionBuilders.weightFactorFunction(8.0f)); // + private static FunctionScoreQueryBuilder boostScore(QueryStringQueryBuilder queryBuilder) { FunctionScoreQueryBuilder.FilterFunctionBuilder tier1Boost = new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.termQuery("tier.tagFQN", "Tier.Tier1"), - ScoreFunctionBuilders.weightFactorFunction(5.0f)); + ScoreFunctionBuilders.weightFactorFunction(50.0f)); FunctionScoreQueryBuilder.FilterFunctionBuilder tier2Boost = new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.termQuery("tier.tagFQN", "Tier.Tier2"), - ScoreFunctionBuilders.weightFactorFunction(3.0f)); + ScoreFunctionBuilders.weightFactorFunction(30.0f)); FunctionScoreQueryBuilder.FilterFunctionBuilder tier3Boost = new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.termQuery("tier.tagFQN", "Tier.Tier3"), - ScoreFunctionBuilders.weightFactorFunction(1.0f)); + ScoreFunctionBuilders.weightFactorFunction(15.0f)); FunctionScoreQueryBuilder.FilterFunctionBuilder weeklyStatsBoost = new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.rangeQuery("usageSummary.weeklyStats.count").gt(0), ScoreFunctionBuilders.fieldValueFactorFunction("usageSummary.weeklyStats.count") - .factor(1.5f) + .factor(4.0f) .modifier(FieldValueFactorFunction.Modifier.SQRT) .missing(1)); @@ -1169,7 +1158,7 @@ public class ElasticSearchClient implements SearchClient { new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.rangeQuery("totalVotes").gt(0), ScoreFunctionBuilders.fieldValueFactorFunction("totalVotes") - .factor(2.0f) + .factor(3.0f) .modifier(FieldValueFactorFunction.Modifier.LN1P) .missing(0)); @@ -1177,16 +1166,10 @@ public class ElasticSearchClient implements SearchClient { return QueryBuilders.functionScoreQuery( queryBuilder, new FunctionScoreQueryBuilder.FilterFunctionBuilder[] { - displayNameBoost, - nameBoost, - tier1Boost, - tier2Boost, - tier3Boost, - weeklyStatsBoost, - totalVotesBoost + tier1Boost, tier2Boost, tier3Boost, weeklyStatsBoost, totalVotesBoost }) .scoreMode(FunctionScoreQuery.ScoreMode.SUM) - .boostMode(CombineFunction.SUM); + .boostMode(CombineFunction.MULTIPLY); } private static HighlightBuilder buildHighlights(List fields) { @@ -1249,7 +1232,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildPipelineSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, PipelineIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("tasks.name", "tasks.description")); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); searchSourceBuilder.aggregation( @@ -1260,7 +1243,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildMlModelSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, MlModelIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("mlFeatures.name", "mlFeatures.description")); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); return addAggregation(searchSourceBuilder); @@ -1269,7 +1252,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildTopicSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, TopicIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); searchSourceBuilder @@ -1283,7 +1266,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildDashboardSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, DashboardIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("charts.name", "charts.description")); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); searchSourceBuilder @@ -1301,7 +1284,7 @@ public class ElasticSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, SearchIndex.getAllFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); searchSourceBuilder.aggregation( AggregationBuilders.terms("database.name.keyword") @@ -1318,7 +1301,7 @@ public class ElasticSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, SearchIndex.getDefaultFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); return addAggregation(searchSourceBuilder); @@ -1327,7 +1310,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildTableSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, TableIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("columns.name", "columns.description", "columns.children.name")); SearchSourceBuilder searchSourceBuilder = @@ -1355,7 +1338,7 @@ public class ElasticSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, GlossaryTermIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("synonyms")); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1370,7 +1353,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildTagSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, TagIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1383,7 +1366,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildContainerSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, ContainerIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights( List.of( @@ -1403,7 +1386,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildQuerySearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, QueryIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); return searchBuilder(queryBuilder, hb, from, size); } @@ -1418,7 +1401,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildStoredProcedureSearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, StoredProcedureIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); queryBuilder.boostMode(CombineFunction.SUM); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = @@ -1430,7 +1413,7 @@ public class ElasticSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, DashboardDataModelIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1442,10 +1425,24 @@ public class ElasticSearchClient implements SearchClient { return addAggregation(searchSourceBuilder); } + private static SearchSourceBuilder buildApiEndpointSearch(String query, int from, int size) { + QueryStringQueryBuilder queryStringBuilder = + buildSearchQueryBuilder(query, APIEndpointIndex.getFields()); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); + HighlightBuilder hb = buildHighlights(new ArrayList<>()); + SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); + searchSourceBuilder + .aggregation( + AggregationBuilders.terms(API_RESPONSE_SCHEMA_FIELD) + .field(API_RESPONSE_SCHEMA_FIELD_KEYWORD)) + .aggregation(AggregationBuilders.terms(SCHEMA_FIELD_NAMES).field(SCHEMA_FIELD_NAMES)); + return addAggregation(searchSourceBuilder); + } + private static SearchSourceBuilder buildDomainsSearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, DomainIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); return searchBuilder(queryBuilder, hb, from, size); } @@ -1459,7 +1456,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildSearchEntitySearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, SearchEntityIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1486,7 +1483,7 @@ public class ElasticSearchClient implements SearchClient { private static SearchSourceBuilder buildDataProductSearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, DataProductIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); queryBuilder.boostMode(CombineFunction.SUM); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = @@ -2073,10 +2070,6 @@ public class ElasticSearchClient implements SearchClient { .calendarInterval(DateHistogramInterval.DAY); TermsAggregationBuilder termsAggregationBuilder; - SumAggregationBuilder sumAggregationBuilder; - SumAggregationBuilder sumEntityCountAggregationBuilder = - AggregationBuilders.sum(DataInsightChartRepository.ENTITY_COUNT) - .field(DataInsightChartRepository.DATA_ENTITY_COUNT); switch (dataInsightChartName) { case AGGREGATED_UNUSED_ASSETS_SIZE, AGGREGATED_UNUSED_ASSETS_COUNT: @@ -2277,7 +2270,9 @@ public class ElasticSearchClient implements SearchClient { case "data_product_search_index" -> buildDataProductSearch(q, from, size); case "test_case_resolution_status_search_index" -> buildTestCaseResolutionStatusSearch( q, from, size); - case "mlmodel_service_search_index", + case "api_endpoint_search_index", "apiEndpoint" -> buildApiEndpointSearch(q, from, size); + case "api_service_search_index", + "mlmodel_service_search_index", "database_service_search_index", "messaging_service_index", "dashboard_service_index", diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/ContainerIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/ContainerIndex.java index 21bdb40d9c7..0f25bcfada7 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/ContainerIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/ContainerIndex.java @@ -57,9 +57,6 @@ public record ContainerIndex(Container container) implements ColumnIndex { Map commonAttributes = getCommonAttributesMap(container, Entity.CONTAINER); doc.putAll(commonAttributes); - doc.put( - "displayName", - container.getDisplayName() != null ? container.getDisplayName() : container.getName()); doc.put("tags", flattenedTagList); doc.put("tier", parseTags.getTierTag()); doc.put("service_suggest", serviceSuggest); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardIndex.java index 9cfb983f721..374e6bc546c 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardIndex.java @@ -48,10 +48,6 @@ public class DashboardIndex implements SearchIndex { } Map commonAttributes = getCommonAttributesMap(dashboard, Entity.DASHBOARD); doc.putAll(commonAttributes); - - doc.put( - "displayName", - dashboard.getDisplayName() != null ? dashboard.getDisplayName() : dashboard.getName()); doc.put("tags", parseTags.getTags()); doc.put("tier", parseTags.getTierTag()); doc.put("chart_suggest", chartSuggest); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/IngestionPipelineIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/IngestionPipelineIndex.java index bf28444a712..3a38121e800 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/IngestionPipelineIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/IngestionPipelineIndex.java @@ -60,11 +60,6 @@ public class IngestionPipelineIndex implements SearchIndex { ingestionPipeline.getName() != null ? ingestionPipeline.getName() : ingestionPipeline.getDisplayName()); - doc.put( - "displayName", - ingestionPipeline.getDisplayName() != null - ? ingestionPipeline.getDisplayName() - : ingestionPipeline.getName()); doc.put("tags", parseTags.getTags()); doc.put("tier", parseTags.getTierTag()); doc.put("service_suggest", serviceSuggest); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/MlModelIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/MlModelIndex.java index 56a5e188a72..98865b5f63a 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/MlModelIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/MlModelIndex.java @@ -32,9 +32,6 @@ public class MlModelIndex implements SearchIndex { ParseTags parseTags = new ParseTags(Entity.getEntityTags(Entity.MLMODEL, mlModel)); Map commonAttributes = getCommonAttributesMap(mlModel, Entity.MLMODEL); doc.putAll(commonAttributes); - doc.put( - "displayName", - mlModel.getDisplayName() != null ? mlModel.getDisplayName() : mlModel.getName()); doc.put("tags", parseTags.getTags()); doc.put("tier", parseTags.getTierTag()); doc.put("serviceType", mlModel.getServiceType()); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/PipelineIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/PipelineIndex.java index c084b6838d1..9479ae8d947 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/PipelineIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/PipelineIndex.java @@ -46,9 +46,6 @@ public class PipelineIndex implements SearchIndex { Map commonAttributes = getCommonAttributesMap(pipeline, Entity.PIPELINE); doc.putAll(commonAttributes); doc.put("name", pipeline.getName() != null ? pipeline.getName() : pipeline.getDisplayName()); - doc.put( - "displayName", - pipeline.getDisplayName() != null ? pipeline.getDisplayName() : pipeline.getName()); doc.put("tags", parseTags.getTags()); doc.put("tier", parseTags.getTierTag()); doc.put("task_suggest", taskSuggest); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/QueryIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/QueryIndex.java index 33f8b133f1a..89b5ce405f8 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/QueryIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/QueryIndex.java @@ -36,7 +36,6 @@ public class QueryIndex implements SearchIndex { ParseTags parseTags = new ParseTags(Entity.getEntityTags(Entity.QUERY, query)); Map commonAttributes = getCommonAttributesMap(query, Entity.QUERY); doc.putAll(commonAttributes); - doc.put("displayName", query.getDisplayName() != null ? query.getDisplayName() : ""); doc.put("tags", parseTags.getTags()); doc.put("tier", parseTags.getTierTag()); return doc; diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchIndex.java index 0add7581bdf..e71d816e713 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchIndex.java @@ -3,14 +3,11 @@ package org.openmetadata.service.search.indexes; import static org.openmetadata.common.utils.CommonUtil.nullOrEmpty; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.jdbi3.LineageRepository.buildRelationshipDetailsMap; import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME; import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; import java.util.ArrayList; import java.util.Collections; @@ -68,6 +65,9 @@ public interface SearchIndex { default Map getCommonAttributesMap(EntityInterface entity, String entityType) { Map map = new HashMap<>(); List suggest = getSuggest(); + map.put( + "displayName", + entity.getDisplayName() != null ? entity.getDisplayName() : entity.getName()); map.put("entityType", entityType); map.put("owners", getEntitiesWithDisplayName(entity.getOwners())); map.put("domain", getEntityWithDisplayName(entity.getDomain())); @@ -163,12 +163,9 @@ public interface SearchIndex { static Map getDefaultFields() { Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 10.0f); + fields.put(DISPLAY_NAME_KEYWORD, 10.0f); fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 10.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); - fields.put(DISPLAY_NAME_KEYWORD, 8.0f); - fields.put(NAME_KEYWORD, 8.0f); + fields.put(FIELD_DISPLAY_NAME, 10.0f); fields.put(FIELD_DESCRIPTION, 2.0f); fields.put(FULLY_QUALIFIED_NAME, 5.0f); fields.put(FULLY_QUALIFIED_NAME_PARTS, 5.0f); @@ -178,6 +175,7 @@ public interface SearchIndex { static Map getAllFields() { Map fields = getDefaultFields(); fields.putAll(TableIndex.getFields()); + fields.putAll(StoredProcedureIndex.getFields()); fields.putAll(DashboardIndex.getFields()); fields.putAll(DashboardDataModelIndex.getFields()); fields.putAll(PipelineIndex.getFields()); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TableIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TableIndex.java index a31036eacb1..3815f0b3f3b 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TableIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TableIndex.java @@ -91,8 +91,6 @@ public record TableIndex(Table table) implements ColumnIndex { .collect(ArrayList::new, ArrayList::add, ArrayList::addAll); Map commonAttributes = getCommonAttributesMap(table, Entity.TABLE); doc.putAll(commonAttributes); - doc.put( - "displayName", table.getDisplayName() != null ? table.getDisplayName() : table.getName()); doc.put("tags", flattenedTagList); doc.put("tier", parseTags.getTierTag()); doc.put("service_suggest", serviceSuggest); @@ -113,7 +111,7 @@ public record TableIndex(Table table) implements ColumnIndex { fields.put("columns.name", 5.0f); fields.put("columns.displayName", 5.0f); fields.put("columns.description", 2.0f); - fields.put("columns.children.name", 5.0f); + fields.put("columns.children.name", 3.0f); return fields; } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TeamIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TeamIndex.java index 79cc2829e5d..8eb4d435e94 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TeamIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TeamIndex.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -import org.openmetadata.common.utils.CommonUtil; import org.openmetadata.schema.entity.teams.Team; import org.openmetadata.service.Entity; import org.openmetadata.service.search.models.SearchSuggest; @@ -39,9 +38,6 @@ public class TeamIndex implements SearchIndex { Map commonAttributes = getCommonAttributesMap(team, Entity.TEAM); doc.putAll(commonAttributes); doc.put("isBot", false); - doc.put( - "displayName", - CommonUtil.nullOrEmpty(team.getDisplayName()) ? team.getName() : team.getDisplayName()); return doc; } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TopicIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TopicIndex.java index c7ae28ad0ee..109c97217eb 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TopicIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TopicIndex.java @@ -76,8 +76,6 @@ public class TopicIndex implements SearchIndex { .collect(ArrayList::new, ArrayList::add, ArrayList::addAll); Map commonAttributes = getCommonAttributesMap(topic, Entity.TOPIC); doc.putAll(commonAttributes); - doc.put( - "displayName", topic.getDisplayName() != null ? topic.getDisplayName() : topic.getName()); doc.put("tags", flattenedTagList); doc.put("tier", parseTags.getTierTag()); doc.put("field_suggest", fieldSuggest); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/UserIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/UserIndex.java index 57a7190a39a..c52acd7b58e 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/UserIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/UserIndex.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -import org.openmetadata.common.utils.CommonUtil; import org.openmetadata.schema.entity.teams.User; import org.openmetadata.service.Entity; import org.openmetadata.service.search.models.SearchSuggest; @@ -38,9 +37,6 @@ public class UserIndex implements SearchIndex { public Map buildSearchIndexDocInternal(Map doc) { Map commonAttributes = getCommonAttributesMap(user, Entity.USER); doc.putAll(commonAttributes); - doc.put( - "displayName", - CommonUtil.nullOrEmpty(user.getDisplayName()) ? user.getName() : user.getDisplayName()); if (user.getIsBot() == null) { doc.put("isBot", false); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java index f29831de980..54f1259569d 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java @@ -8,11 +8,12 @@ import static org.openmetadata.service.Entity.DATA_PRODUCT; import static org.openmetadata.service.Entity.DOMAIN; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.GLOSSARY_TERM; import static org.openmetadata.service.Entity.QUERY; import static org.openmetadata.service.Entity.RAW_COST_ANALYSIS_REPORT_DATA; import static org.openmetadata.service.exception.CatalogGenericExceptionMapper.getResponse; +import static org.openmetadata.service.search.EntityBuilderConstant.API_RESPONSE_SCHEMA_FIELD; +import static org.openmetadata.service.search.EntityBuilderConstant.API_RESPONSE_SCHEMA_FIELD_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.COLUMNS_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.DATA_MODEL_COLUMNS_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.DOMAIN_DISPLAY_NAME_KEYWORD; @@ -20,7 +21,6 @@ import static org.openmetadata.service.search.EntityBuilderConstant.ES_MESSAGE_S import static org.openmetadata.service.search.EntityBuilderConstant.ES_TAG_FQN_FIELD; import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_COLUMN_NAMES; import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; import static org.openmetadata.service.search.EntityBuilderConstant.MAX_AGGREGATE_SIZE; import static org.openmetadata.service.search.EntityBuilderConstant.MAX_RESULT_HITS; import static org.openmetadata.service.search.EntityBuilderConstant.OWNER_DISPLAY_NAME_KEYWORD; @@ -81,6 +81,7 @@ import org.openmetadata.service.search.SearchClient; import org.openmetadata.service.search.SearchIndexUtils; import org.openmetadata.service.search.SearchRequest; import org.openmetadata.service.search.SearchSortFilter; +import org.openmetadata.service.search.indexes.APIEndpointIndex; import org.openmetadata.service.search.indexes.ContainerIndex; import org.openmetadata.service.search.indexes.DashboardDataModelIndex; import org.openmetadata.service.search.indexes.DashboardIndex; @@ -521,6 +522,9 @@ public class OpenSearchClient implements SearchClient { } searchSourceBuilder.timeout(new TimeValue(30, TimeUnit.SECONDS)); + if (request.isExplain()) { + searchSourceBuilder.explain(true); + } try { SearchResponse searchResponse = client.search( @@ -928,43 +932,27 @@ public class OpenSearchClient implements SearchClient { return responseMap; } - private static FunctionScoreQueryBuilder boostScore( - QueryStringQueryBuilder queryBuilder, String query) { - - FunctionScoreQueryBuilder.FilterFunctionBuilder exactMatchBoost = - new FunctionScoreQueryBuilder.FilterFunctionBuilder( - QueryBuilders.termQuery("displayName.keyword", query), - ScoreFunctionBuilders.weightFactorFunction(10)); - - FunctionScoreQueryBuilder.FilterFunctionBuilder nameBoost = - new FunctionScoreQueryBuilder.FilterFunctionBuilder( - QueryBuilders.boolQuery() - .mustNot( - QueryBuilders.existsQuery( - "displayName.keyword")) // Only use name if displayName doesn't exist - .must(QueryBuilders.matchQuery("name.keyword", query)), - ScoreFunctionBuilders.weightFactorFunction(8.0f)); - + private static FunctionScoreQueryBuilder boostScore(QueryStringQueryBuilder queryBuilder) { FunctionScoreQueryBuilder.FilterFunctionBuilder tier1Boost = new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.termQuery("tier.tagFQN", "Tier1"), - ScoreFunctionBuilders.weightFactorFunction(5.0f)); + ScoreFunctionBuilders.weightFactorFunction(50.0f)); FunctionScoreQueryBuilder.FilterFunctionBuilder tier2Boost = new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.termQuery("tier.tagFQN", "Tier2"), - ScoreFunctionBuilders.weightFactorFunction(3.0f)); + ScoreFunctionBuilders.weightFactorFunction(30.0f)); FunctionScoreQueryBuilder.FilterFunctionBuilder tier3Boost = new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.termQuery("tier.tagFQN", "Tier3"), - ScoreFunctionBuilders.weightFactorFunction(1.0f)); + ScoreFunctionBuilders.weightFactorFunction(15.0f)); FunctionScoreQueryBuilder.FilterFunctionBuilder weeklyStatsBoost = new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.rangeQuery("usageSummary.weeklyStats.count").gt(0), ScoreFunctionBuilders.fieldValueFactorFunction("usageSummary.weeklyStats.count") - .factor(1.5f) + .factor(4.0f) .modifier(FieldValueFactorFunction.Modifier.SQRT) .missing(1)); @@ -972,7 +960,7 @@ public class OpenSearchClient implements SearchClient { new FunctionScoreQueryBuilder.FilterFunctionBuilder( QueryBuilders.rangeQuery("totalVotes").gt(0), ScoreFunctionBuilders.fieldValueFactorFunction("totalVotes") - .factor(2.0f) + .factor(3.0f) .modifier(FieldValueFactorFunction.Modifier.LN1P) .missing(0)); @@ -980,26 +968,15 @@ public class OpenSearchClient implements SearchClient { return QueryBuilders.functionScoreQuery( queryBuilder, new FunctionScoreQueryBuilder.FilterFunctionBuilder[] { - nameBoost, - exactMatchBoost, - tier1Boost, - tier2Boost, - tier3Boost, - weeklyStatsBoost, - totalVotesBoost + tier1Boost, tier2Boost, tier3Boost, weeklyStatsBoost, totalVotesBoost }) .scoreMode(FunctionScoreQuery.ScoreMode.SUM) - .boostMode(CombineFunction.SUM); + .boostMode(CombineFunction.MULTIPLY); } private static HighlightBuilder buildHighlights(List fields) { List defaultFields = - List.of( - FIELD_DISPLAY_NAME, - FIELD_NAME, - FIELD_DESCRIPTION, - FIELD_DISPLAY_NAME_NGRAM, - FIELD_NAME_NGRAM); + List.of(FIELD_DISPLAY_NAME, FIELD_DESCRIPTION, FIELD_DISPLAY_NAME_NGRAM); defaultFields = Stream.concat(defaultFields.stream(), fields.stream()).toList(); HighlightBuilder hb = new HighlightBuilder(); for (String field : defaultFields) { @@ -1236,7 +1213,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildPipelineSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, PipelineIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("tasks.name", "tasks.description")); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); searchSourceBuilder.aggregation( @@ -1247,7 +1224,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildMlModelSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, MlModelIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("mlFeatures.name", "mlFeatures.description")); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); return addAggregation(searchSourceBuilder); @@ -1256,7 +1233,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildTopicSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, TopicIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights( List.of( @@ -1274,7 +1251,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildDashboardSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, DashboardIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("charts.name", "charts.description")); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); searchSourceBuilder @@ -1292,7 +1269,7 @@ public class OpenSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, SearchIndex.getAllFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); queryBuilder.boostMode(CombineFunction.SUM); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); searchSourceBuilder.aggregation( @@ -1310,7 +1287,7 @@ public class OpenSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, SearchIndex.getDefaultFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); return addAggregation(searchSourceBuilder); @@ -1319,10 +1296,10 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildTableSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, TableIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("columns.name", "columns.description", "columns.children.name")); - queryBuilder.boostMode(CombineFunction.SUM); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); searchSourceBuilder.aggregation( @@ -1351,7 +1328,7 @@ public class OpenSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, GlossaryTermIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("synonyms")); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1366,7 +1343,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildTagSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, TagIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1379,7 +1356,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildContainerSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, ContainerIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights( List.of( @@ -1399,7 +1376,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildQuerySearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, QueryIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); return searchBuilder(queryBuilder, hb, from, size); } @@ -1407,7 +1384,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildTestCaseSearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, TestCaseIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(List.of("testSuite.name", "testSuite.description")); return searchBuilder(queryBuilder, hb, from, size); } @@ -1415,7 +1392,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildStoredProcedureSearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, StoredProcedureIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1426,7 +1403,7 @@ public class OpenSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, DashboardDataModelIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1447,7 +1424,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildDomainsSearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, DomainIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); return searchBuilder(queryBuilder, hb, from, size); } @@ -1455,7 +1432,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildSearchEntitySearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, SearchEntityIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -1468,11 +1445,12 @@ public class OpenSearchClient implements SearchClient { String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, TestCaseResolutionStatusIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); return searchBuilder(queryBuilder, hb, from, size); } + private static QueryStringQueryBuilder buildSearchQueryBuilder( String query, Map fields) { return QueryBuilders.queryStringQuery(query) @@ -1484,6 +1462,20 @@ public class OpenSearchClient implements SearchClient { .tieBreaker(0.5f); } + private static SearchSourceBuilder buildApiEndpointSearch(String query, int from, int size) { + QueryStringQueryBuilder queryStringBuilder = + buildSearchQueryBuilder(query, APIEndpointIndex.getFields()); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); + HighlightBuilder hb = buildHighlights(new ArrayList<>()); + SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, hb, from, size); + searchSourceBuilder + .aggregation( + AggregationBuilders.terms(API_RESPONSE_SCHEMA_FIELD) + .field(API_RESPONSE_SCHEMA_FIELD_KEYWORD)) + .aggregation(AggregationBuilders.terms(SCHEMA_FIELD_NAMES).field(SCHEMA_FIELD_NAMES)); + return addAggregation(searchSourceBuilder); + } + private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query) @@ -1529,7 +1521,7 @@ public class OpenSearchClient implements SearchClient { private static SearchSourceBuilder buildDataProductSearch(String query, int from, int size) { QueryStringQueryBuilder queryStringBuilder = buildSearchQueryBuilder(query, DataProductIndex.getFields()); - FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder, query); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); HighlightBuilder hb = buildHighlights(new ArrayList<>()); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); @@ -2255,7 +2247,9 @@ public class OpenSearchClient implements SearchClient { case "data_product_search_index" -> buildDataProductSearch(q, from, size); case "test_case_resolution_status_search_index" -> buildTestCaseResolutionStatusSearch( q, from, size); - case "mlmodel_service_search_index", + case "api_endpoint_search_index", "apiEndpoint" -> buildApiEndpointSearch(q, from, size); + case "api_service_search_index", + "mlmodel_service_search_index", "database_service_search_index", "messaging_service_index", "dashboard_service_index", diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/api_collection_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/api_collection_index_mapping.json index 1e8fa26b261..0a530e21541 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/api_collection_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/api_collection_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/api_endpoint_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/api_endpoint_index_mapping.json index 4c9d53698e1..e46fdfa2d2b 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/api_endpoint_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/api_endpoint_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/api_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/api_service_index_mapping.json index 4b659c4e05a..be3be4c0c5a 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/api_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/api_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/chart_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/chart_index_mapping.json index c09a3507478..b94780ddcf7 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/chart_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/chart_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/classification_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/classification_index_mapping.json index ee96041b6e4..260395f7b83 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/classification_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/classification_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/container_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/container_index_mapping.json index 88037d1836e..acf3955dcea 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/container_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/container_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_data_model_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_data_model_index_mapping.json index d2fd08dc8cd..6f9b18cc37e 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_data_model_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_data_model_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 dc1f5678d58..a730d8c4d59 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 @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_service_index_mapping.json index 50ca26dbd62..aa79a2b6ea6 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/dashboard_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/data_products_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/data_products_index_mapping.json index e6813204b1b..d3ab1595f60 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/data_products_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/data_products_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/database_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/database_index_mapping.json index 3a47adb7ef6..d3852888c4b 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/database_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/database_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/database_schema_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/database_schema_index_mapping.json index 8ad3e022efd..58f93e6d8c7 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/database_schema_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/database_schema_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/database_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/database_service_index_mapping.json index 287b51d2a7c..c4945b878c9 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/database_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/database_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/domain_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/domain_index_mapping.json index a0dfc211899..2f4fc63009a 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/domain_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/domain_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 41f278d7e55..c7b69402add 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 @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/glossary_term_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/glossary_term_index_mapping.json index e459ebb2b17..71cedc3de7b 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/glossary_term_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/glossary_term_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/ingestion_pipeline_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/ingestion_pipeline_index_mapping.json index 47361aa9e34..89e08752185 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/ingestion_pipeline_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/ingestion_pipeline_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/messaging_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/messaging_service_index_mapping.json index 7dd07383822..b70baf91646 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/messaging_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/messaging_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/metadata_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/metadata_service_index_mapping.json index cfc01ac723e..d2fc612b0fd 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/metadata_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/metadata_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 6f16fe624d9..9ce683c2a29 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 @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/mlmodel_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/mlmodel_service_index_mapping.json index 31c190e9644..6b1deed7540 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/mlmodel_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/mlmodel_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 48d8d32019f..8e56453dc3a 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 @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/pipeline_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/pipeline_service_index_mapping.json index e7f5fcf6d84..ba16e4b6399 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/pipeline_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/pipeline_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/query_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/query_index_mapping.json index 75519a0a406..c2ac7d1286d 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/query_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/query_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/search_entity_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/search_entity_index_mapping.json index 2197ea7b25f..2f35e61b0eb 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/search_entity_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/search_entity_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/search_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/search_service_index_mapping.json index 4b659c4e05a..be3be4c0c5a 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/search_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/search_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/storage_service_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/storage_service_index_mapping.json index a9046a0f942..31a5024531a 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/storage_service_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/storage_service_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/stored_procedure_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/stored_procedure_index_mapping.json index 624dc025672..46fc16a8251 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/stored_procedure_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/stored_procedure_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 92523823ad7..a2205a4bb36 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 @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 1f4636d50ec..4d1d668f441 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 @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 ac8dacfd47d..795c756791b 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,37 +1,50 @@ { "settings": { - "analysis": { - "normalizer": { - "lowercase_normalizer": { - "type": "custom", - "char_filter": [], - "filter": [ - "lowercase" - ] - } - }, - "analyzer": { - "om_analyzer": { - "tokenizer": "letter", - "filter": [ - "lowercase", - "om_stemmer" - ] + "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } }, - "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10 - } - }, - "filter": { - "om_stemmer": { - "type": "stemmer", - "name": "english" + "normalizer": { + "lowercase_normalizer": { + "type": "custom", + "char_filter": [], + "filter": [ + "lowercase" + ] + } + }, + "analyzer": { + "om_analyzer": { + "tokenizer": "standard", + "filter": [ + "lowercase", + "word_delimiter_filter", + "om_stemmer" + ] + }, + "om_ngram": { + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] + } + }, + "filter": { + "om_stemmer": { + "type": "stemmer", + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true + } } } - } -}, + }, "mappings": { "properties": { "id": { diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/test_case_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/test_case_index_mapping.json index 64e87ae4cfe..4704d036a07 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/test_case_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/test_case_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/test_case_resolution_status_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/test_case_resolution_status_index_mapping.json index f558e06cbb3..cc1a5a3d7ec 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/test_case_resolution_status_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/test_case_resolution_status_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/test_suite_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/test_suite_index_mapping.json index ad1f24d9006..9d7fa81fb34 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/test_suite_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/test_suite_index_mapping.json @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 3ae6aa736c8..0f0b053cad2 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 @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } } 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 b2e96283218..7028f0348c0 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 @@ -1,6 +1,14 @@ { "settings": { "analysis": { + "tokenizer": { + "edge_ngram_tokenizer": { + "type": "edge_ngram", + "min_gram": 3, + "max_gram": 20, + "token_chars": ["letter", "digit"] + } + }, "normalizer": { "lowercase_normalizer": { "type": "custom", @@ -12,25 +20,27 @@ }, "analyzer": { "om_analyzer": { - "tokenizer": "letter", + "tokenizer": "standard", "filter": [ "lowercase", + "word_delimiter_filter", "om_stemmer" ] }, "om_ngram": { - "tokenizer": "ngram", - "min_gram": 3, - "max_gram": 10, - "filter": [ - "lowercase" - ] + "type": "custom", + "tokenizer": "edge_ngram_tokenizer", + "filter": ["lowercase"] } }, "filter": { "om_stemmer": { "type": "stemmer", - "name": "english" + "name": "kstem" + }, + "word_delimiter_filter": { + "type": "word_delimiter", + "preserve_original": true } } }