diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticSearch/ElasticSearchClientImpl.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticSearch/ElasticSearchClientImpl.java index 86cdbe50a57..4225e2ff15d 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticSearch/ElasticSearchClientImpl.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticSearch/ElasticSearchClientImpl.java @@ -278,6 +278,9 @@ public class ElasticSearchClientImpl implements SearchClient { case "query_search_index": searchSourceBuilder = buildQuerySearchBuilder(request.getQuery(), request.getFrom(), request.getSize()); break; + case "test_case_search_index": + searchSourceBuilder = buildTestCaseSearch(request.getQuery(), request.getFrom(), request.getSize()); + break; default: searchSourceBuilder = buildAggregateSearchBuilder(request.getQuery(), request.getFrom(), request.getSize()); break; @@ -728,6 +731,39 @@ public class ElasticSearchClientImpl implements SearchClient { return searchBuilder(queryBuilder, hb, from, size); } + private static SearchSourceBuilder buildTestCaseSearch(String query, int from, int size) { + QueryStringQueryBuilder queryBuilder = + QueryBuilders.queryStringQuery(query) + .field(FIELD_NAME, 10.0f) + .field(EntityBuilderConstant.DESCRIPTION, 3.0f) + .field("testSuite.fullyQualifiedName", 10.0f) + .field("testSuite.name", 10.0f) + .field("testSuite.description", 3.0f) + .field("entityLink", 3.0f) + .field("entityFQN", 10.0f) + .defaultOperator(Operator.AND) + .fuzziness(Fuzziness.AUTO); + + HighlightBuilder.Field highlightTestCaseDescription = new HighlightBuilder.Field(FIELD_DESCRIPTION); + highlightTestCaseDescription.highlighterType(EntityBuilderConstant.UNIFIED); + HighlightBuilder.Field highlightTestCaseName = new HighlightBuilder.Field(FIELD_NAME); + highlightTestCaseName.highlighterType(EntityBuilderConstant.UNIFIED); + HighlightBuilder.Field highlightTestSuiteName = new HighlightBuilder.Field("testSuite.name"); + highlightTestSuiteName.highlighterType(EntityBuilderConstant.UNIFIED); + HighlightBuilder.Field highlightTestSuiteDescription = new HighlightBuilder.Field("testSuite.description"); + highlightTestSuiteDescription.highlighterType(EntityBuilderConstant.UNIFIED); + HighlightBuilder hb = new HighlightBuilder(); + hb.field(highlightTestCaseDescription); + hb.field(highlightTestCaseName); + hb.field(highlightTestSuiteName); + hb.field(highlightTestSuiteDescription); + + hb.preTags(EntityBuilderConstant.PRE_TAG); + hb.postTags(EntityBuilderConstant.POST_TAG); + + return searchBuilder(queryBuilder, hb, from, size); + } + private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query).lenient(true); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/openSearch/OpenSearchClientImpl.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/openSearch/OpenSearchClientImpl.java index d564c965841..862443a377f 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/openSearch/OpenSearchClientImpl.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/openSearch/OpenSearchClientImpl.java @@ -278,6 +278,9 @@ public class OpenSearchClientImpl implements SearchClient { case "query_search_index": searchSourceBuilder = buildQuerySearchBuilder(request.getQuery(), request.getFrom(), request.getSize()); break; + case "test_case_search_index": + searchSourceBuilder = buildTestCaseSearch(request.getQuery(), request.getFrom(), request.getSize()); + break; default: searchSourceBuilder = buildAggregateSearchBuilder(request.getQuery(), request.getFrom(), request.getSize()); break; @@ -735,6 +738,39 @@ public class OpenSearchClientImpl implements SearchClient { return searchBuilder(queryBuilder, hb, from, size); } + private static SearchSourceBuilder buildTestCaseSearch(String query, int from, int size) { + QueryStringQueryBuilder queryBuilder = + QueryBuilders.queryStringQuery(query) + .field(FIELD_NAME, 10.0f) + .field(EntityBuilderConstant.DESCRIPTION, 3.0f) + .field("testSuite.fullyQualifiedName", 10.0f) + .field("testSuite.name", 10.0f) + .field("testSuite.description", 3.0f) + .field("entityLink", 3.0f) + .field("entityFQN", 10.0f) + .defaultOperator(Operator.AND) + .fuzziness(Fuzziness.AUTO); + + HighlightBuilder.Field highlightTestCaseDescription = new HighlightBuilder.Field(FIELD_DESCRIPTION); + highlightTestCaseDescription.highlighterType(EntityBuilderConstant.UNIFIED); + HighlightBuilder.Field highlightTestCaseName = new HighlightBuilder.Field(FIELD_NAME); + highlightTestCaseName.highlighterType(EntityBuilderConstant.UNIFIED); + HighlightBuilder.Field highlightTestSuiteName = new HighlightBuilder.Field("testSuite.name"); + highlightTestSuiteName.highlighterType(EntityBuilderConstant.UNIFIED); + HighlightBuilder.Field highlightTestSuiteDescription = new HighlightBuilder.Field("testSuite.description"); + highlightTestSuiteDescription.highlighterType(EntityBuilderConstant.UNIFIED); + HighlightBuilder hb = new HighlightBuilder(); + hb.field(highlightTestCaseDescription); + hb.field(highlightTestCaseName); + hb.field(highlightTestSuiteName); + hb.field(highlightTestSuiteDescription); + + hb.preTags(EntityBuilderConstant.PRE_TAG); + hb.postTags(EntityBuilderConstant.POST_TAG); + + return searchBuilder(queryBuilder, hb, from, size); + } + private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) { QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query).lenient(true); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size);