From 1c7aee38072716640613b181078870ef4f5798ca Mon Sep 17 00:00:00 2001 From: nbagga14 Date: Mon, 30 Sep 2024 20:13:46 +0530 Subject: [PATCH] Refactoring indentation to support IEQUAL operator --- .../metadata/search/utils/ESUtils.java | 43 ++++-- .../metadata/search/utils/ESUtilsTest.java | 134 +++++++++--------- 2 files changed, 97 insertions(+), 80 deletions(-) diff --git a/metadata-io/src/main/java/com/linkedin/metadata/search/utils/ESUtils.java b/metadata-io/src/main/java/com/linkedin/metadata/search/utils/ESUtils.java index 19b9bfc0c8b89..9f48727aeca78 100644 --- a/metadata-io/src/main/java/com/linkedin/metadata/search/utils/ESUtils.java +++ b/metadata-io/src/main/java/com/linkedin/metadata/search/utils/ESUtils.java @@ -551,6 +551,7 @@ private static QueryBuilder getQueryBuilderFromCriterionForFieldToExpand( } return orQueryBuilder; } + private static boolean isCaseInsensitiveSearchEnabled(Condition condition) { return condition == Condition.IEQUAL; } @@ -578,10 +579,15 @@ private static QueryBuilder getQueryBuilderFromCriterionForSingleField( .must(QueryBuilders.existsQuery(fieldName)) .queryName(queryName != null ? queryName : fieldName); } else if (criterion.hasValues()) { - if (condition == Condition.EQUAL || condition ==Condition.IEQUAL) { + if (condition == Condition.EQUAL || condition == Condition.IEQUAL) { enableCaseInsensitiveSearch = isCaseInsensitiveSearchEnabled(condition); return buildEqualsConditionFromCriterion( - fieldName, criterion, isTimeseries, searchableFieldTypes, aspectRetriever, enableCaseInsensitiveSearch) + fieldName, + criterion, + isTimeseries, + searchableFieldTypes, + aspectRetriever, + enableCaseInsensitiveSearch) .queryName(queryName != null ? queryName : fieldName); } else if (RANGE_QUERY_CONDITIONS.contains(condition)) { return buildRangeQueryFromCriterion( @@ -611,7 +617,12 @@ private static QueryBuilder getQueryBuilderFromCriterionForSingleField( .rewrite( opContext, buildEqualsConditionFromCriterion( - fieldName, criterion, isTimeseries, searchableFieldTypes, aspectRetriever, enableCaseInsensitiveSearch)) + fieldName, + criterion, + isTimeseries, + searchableFieldTypes, + aspectRetriever, + enableCaseInsensitiveSearch)) .queryName(queryName != null ? queryName : fieldName); } } @@ -676,9 +687,15 @@ private static QueryBuilder buildEqualsConditionFromCriterion( @Nonnull final Criterion criterion, final boolean isTimeseries, final Map> searchableFieldTypes, - @Nonnull AspectRetriever aspectRetriever, boolean enableCaseInsensitiveSearch ) { + @Nonnull AspectRetriever aspectRetriever, + boolean enableCaseInsensitiveSearch) { return buildEqualsConditionFromCriterionWithValues( - fieldName, criterion, isTimeseries, searchableFieldTypes, aspectRetriever, enableCaseInsensitiveSearch); + fieldName, + criterion, + isTimeseries, + searchableFieldTypes, + aspectRetriever, + enableCaseInsensitiveSearch); } /** @@ -690,7 +707,8 @@ private static QueryBuilder buildEqualsConditionFromCriterionWithValues( @Nonnull final Criterion criterion, final boolean isTimeseries, final Map> searchableFieldTypes, - @Nonnull AspectRetriever aspectRetriever, boolean enableCaseInsensitiveSearch) { + @Nonnull AspectRetriever aspectRetriever, + boolean enableCaseInsensitiveSearch) { Set fieldTypes = getFieldTypes(searchableFieldTypes, fieldName, aspectRetriever); if (fieldTypes.size() > 1) { log.warn( @@ -713,14 +731,15 @@ private static QueryBuilder buildEqualsConditionFromCriterionWithValues( if (enableCaseInsensitiveSearch) { BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - criterion.getValues().forEach(value -> - boolQuery.should( + criterion + .getValues() + .forEach( + value -> + boolQuery.should( QueryBuilders.termQuery( toKeywordField(criterion.getField(), isTimeseries, aspectRetriever), - value.trim() - ).caseInsensitive(true) - ) - ); + value.trim()) + .caseInsensitive(true))); return boolQuery; } diff --git a/metadata-io/src/test/java/com/linkedin/metadata/search/utils/ESUtilsTest.java b/metadata-io/src/test/java/com/linkedin/metadata/search/utils/ESUtilsTest.java index 915624e6e1e60..8d54622491b6b 100644 --- a/metadata-io/src/test/java/com/linkedin/metadata/search/utils/ESUtilsTest.java +++ b/metadata-io/src/test/java/com/linkedin/metadata/search/utils/ESUtilsTest.java @@ -152,90 +152,88 @@ public void testGetQueryBuilderFromCriterionEqualsValues() { } @Test - public void testGetQueryBuilderFromCriterionIEqualValues() { //Test case insensitive searches + public void testGetQueryBuilderFromCriterionIEqualValues() { // Test case insensitive searches final Criterion singleValueCriterion = - new Criterion() - .setField("myTestField") - .setCondition(Condition.IEQUAL) - .setValues(new StringArray(ImmutableList.of("value1"))); + new Criterion() + .setField("myTestField") + .setCondition(Condition.IEQUAL) + .setValues(new StringArray(ImmutableList.of("value1"))); QueryBuilder result = - ESUtils.getQueryBuilderFromCriterion( - singleValueCriterion, - false, - new HashMap<>(), - mock(OperationContext.class), - QueryFilterRewriteChain.EMPTY); + ESUtils.getQueryBuilderFromCriterion( + singleValueCriterion, + false, + new HashMap<>(), + mock(OperationContext.class), + QueryFilterRewriteChain.EMPTY); String expected = - "{\n" - + " \"bool\" : {\n" - + " \"should\" : [\n" - + " {\n" - + " \"term\" : {\n" - + " \"myTestField.keyword\" : {\n" - + " \"value\" : \"value1\",\n" - + " \"case_insensitive\" : true,\n" - + " \"boost\" : 1.0\n" - + " }\n" - + " }\n" - + " }\n" - + " ],\n" - + " \"adjust_pure_negative\" : true,\n" - + " \"boost\" : 1.0,\n" - + " \"_name\" : \"myTestField\"\n" - + " }\n" - + "}"; + "{\n" + + " \"bool\" : {\n" + + " \"should\" : [\n" + + " {\n" + + " \"term\" : {\n" + + " \"myTestField.keyword\" : {\n" + + " \"value\" : \"value1\",\n" + + " \"case_insensitive\" : true,\n" + + " \"boost\" : 1.0\n" + + " }\n" + + " }\n" + + " }\n" + + " ],\n" + + " \"adjust_pure_negative\" : true,\n" + + " \"boost\" : 1.0,\n" + + " \"_name\" : \"myTestField\"\n" + + " }\n" + + "}"; Assert.assertEquals(result.toString(), expected); final Criterion multiValueCriterion = - new Criterion() - .setField("myTestField") - .setCondition(Condition.IEQUAL) - .setValues(new StringArray(ImmutableList.of("value1", "value2"))); + new Criterion() + .setField("myTestField") + .setCondition(Condition.IEQUAL) + .setValues(new StringArray(ImmutableList.of("value1", "value2"))); result = - ESUtils.getQueryBuilderFromCriterion( - multiValueCriterion, - false, - new HashMap<>(), - mock(OperationContext.class), - QueryFilterRewriteChain.EMPTY); + ESUtils.getQueryBuilderFromCriterion( + multiValueCriterion, + false, + new HashMap<>(), + mock(OperationContext.class), + QueryFilterRewriteChain.EMPTY); expected = - "{\n" - + " \"bool\" : {\n" - + " \"should\" : [\n" - + " {\n" - + " \"term\" : {\n" - + " \"myTestField.keyword\" : {\n" - + " \"value\" : \"value1\",\n" - + " \"case_insensitive\" : true,\n" - + " \"boost\" : 1.0\n" - + " }\n" - + " }\n" - + " },\n" - + " {\n" - + " \"term\" : {\n" - + " \"myTestField.keyword\" : {\n" - + " \"value\" : \"value2\",\n" - + " \"case_insensitive\" : true,\n" - + " \"boost\" : 1.0\n" - + " }\n" - + " }\n" - + " }\n" - + " ],\n" - + " \"adjust_pure_negative\" : true,\n" - + " \"boost\" : 1.0,\n" - + " \"_name\" : \"myTestField\"\n" - + " }\n" - + "}"; + "{\n" + + " \"bool\" : {\n" + + " \"should\" : [\n" + + " {\n" + + " \"term\" : {\n" + + " \"myTestField.keyword\" : {\n" + + " \"value\" : \"value1\",\n" + + " \"case_insensitive\" : true,\n" + + " \"boost\" : 1.0\n" + + " }\n" + + " }\n" + + " },\n" + + " {\n" + + " \"term\" : {\n" + + " \"myTestField.keyword\" : {\n" + + " \"value\" : \"value2\",\n" + + " \"case_insensitive\" : true,\n" + + " \"boost\" : 1.0\n" + + " }\n" + + " }\n" + + " }\n" + + " ],\n" + + " \"adjust_pure_negative\" : true,\n" + + " \"boost\" : 1.0,\n" + + " \"_name\" : \"myTestField\"\n" + + " }\n" + + "}"; Assert.assertEquals(result.toString(), expected); - - } @Test