From ae5a38239182b955717b25c1d45e61ee8e1027f5 Mon Sep 17 00:00:00 2001 From: nivetha Date: Tue, 26 Apr 2022 11:10:39 +0530 Subject: [PATCH] Multi filter search Fix --- .../src/main/java/org/sunbird/actors/SearchActor.java | 10 +++++----- .../org/sunbird/search/processor/SearchProcessor.java | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/search-api/search-actors/src/main/java/org/sunbird/actors/SearchActor.java b/search-api/search-actors/src/main/java/org/sunbird/actors/SearchActor.java index 68f175363..589368308 100644 --- a/search-api/search-actors/src/main/java/org/sunbird/actors/SearchActor.java +++ b/search-api/search-actors/src/main/java/org/sunbird/actors/SearchActor.java @@ -236,13 +236,13 @@ private SearchDTO getSearchDTO(Request request) throws Exception { // Changing fields to null so that search all fields but returns // only the fields specified properties.addAll(getSearchQueryProperties(queryString, null)); - properties.addAll(getSearchFilterProperties(filters, wordChainsRequest, request)); + properties.addAll(getSearchFilterProperties(filters, wordChainsRequest, request, true)); searchObj.setSortBy(sortBy); searchObj.setFacets(facets); searchObj.setProperties(properties); if (multiFilters != null) { List multiFilterProperties = new ArrayList(); - multiFilterProperties.addAll(getSearchFilterProperties(multiFilters, wordChainsRequest, request)); + multiFilterProperties.addAll(getSearchFilterProperties(multiFilters, wordChainsRequest, request, false)); searchObj.setMultiFilterProperties(multiFilterProperties); } // Added Implicit Filter Properties To Support Collection content tagging to reuse by tenants. @@ -372,7 +372,7 @@ private List> getSearchQueryProperties(String queryString, L } @SuppressWarnings({ "unchecked", "rawtypes" }) - private List> getSearchFilterProperties(Map filters, Boolean traversal, Request request) + private List> getSearchFilterProperties(Map filters, Boolean traversal, Request request, Boolean defaultProperty) throws Exception { List> properties = new ArrayList>(); if (null == filters) filters = new HashMap(); @@ -516,7 +516,7 @@ private List> getSearchFilterProperties(Map } } - if (!filters.containsKey("status") && !traversal) { + if (defaultProperty && !filters.containsKey("status") && !traversal) { Map property = getFilterProperty("status", SearchConstants.SEARCH_OPERATION_EQUAL, Arrays.asList(new String[] { "Live" })); properties.add(property); } @@ -773,7 +773,7 @@ private void setImplicitFilters(Map filters, SearchDTO searchObj } } List implicitFilterProps = new ArrayList(); - implicitFilterProps.addAll(getSearchFilterProperties(implicitFilter, false, null)); + implicitFilterProps.addAll(getSearchFilterProperties(implicitFilter, false, null, true)); searchObj.setImplicitFilterProperties(implicitFilterProps); } } diff --git a/search-api/search-core/src/main/java/org/sunbird/search/processor/SearchProcessor.java b/search-api/search-core/src/main/java/org/sunbird/search/processor/SearchProcessor.java index 489530e55..ad87cf303 100644 --- a/search-api/search-core/src/main/java/org/sunbird/search/processor/SearchProcessor.java +++ b/search-api/search-core/src/main/java/org/sunbird/search/processor/SearchProcessor.java @@ -329,7 +329,9 @@ private QueryBuilder prepareSearchQuery(SearchDTO searchDTO) { List properties = searchDTO.getProperties(); formQuery(properties, queryBuilder, boolQuery, totalOperation); if(searchDTO.getMultiFilterProperties() != null) { - formQuery(searchDTO.getMultiFilterProperties(), queryBuilder, boolQuery, SearchConstants.SEARCH_OPERATION_OR); + BoolQueryBuilder multiFilterBoolQuery = new BoolQueryBuilder(); + formQuery(searchDTO.getMultiFilterProperties(), queryBuilder, multiFilterBoolQuery, SearchConstants.SEARCH_OPERATION_OR); + boolQuery.must(multiFilterBoolQuery); } Map softConstraints = searchDTO.getSoftConstraints();