From 94e4d1e6300828545f66f4413b6bca29efb0042a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Mon, 18 Oct 2021 14:28:02 +0200 Subject: [PATCH] RED-2175, RED-2472: Backported search fixes --- .../search/v1/server/service/SearchService.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/SearchService.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/SearchService.java index 52d3487..810aeb7 100644 --- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/SearchService.java +++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/SearchService.java @@ -92,9 +92,9 @@ public class SearchService { sectionsQueries.should(textPhraseQuery); } for (String should : query.getShoulds()) { - QueryBuilder textTermQuery = QueryBuilders.termQuery("sections.text", should.toLowerCase(Locale.ROOT)) + QueryBuilder textTermQuery = QueryBuilders.matchPhraseQuery("sections.text", should.toLowerCase(Locale.ROOT)) .queryName(should); - QueryBuilder filenameTermQuery = QueryBuilders.termQuery("filename", should.toLowerCase(Locale.ROOT)) + QueryBuilder filenameTermQuery = QueryBuilders.matchPhraseQuery("filename", should.toLowerCase(Locale.ROOT)) .queryName("filename." + should); entireQuery.should(textTermQuery); entireQuery.should(filenameTermQuery); @@ -109,6 +109,9 @@ public class SearchService { entireQuery.should(nestedQuery); } + + BoolQueryBuilder filterQuery = QueryBuilders.boolQuery(); + if (dossierTemplateIds != null && !dossierTemplateIds.isEmpty()) { var dossierTemplateIdQueryBuilder = QueryBuilders.boolQuery(); @@ -117,7 +120,7 @@ public class SearchService { dossierTemplateIdQueryBuilder = dossierTemplateIdQueryBuilder.should(QueryBuilders.matchQuery("dossierTemplateId", dossierTemplateId)); } - entireQuery.filter(dossierTemplateIdQueryBuilder); + filterQuery.must(dossierTemplateIdQueryBuilder); } if (dossierIds != null && !dossierIds.isEmpty()) { @@ -128,15 +131,15 @@ public class SearchService { dossierIdQueryBuilder = dossierIdQueryBuilder.should(QueryBuilders.matchQuery("dossierId", dossierId)); } - entireQuery.filter(dossierIdQueryBuilder); + filterQuery.must(dossierIdQueryBuilder); } if (fileId != null) { - entireQuery.filter(QueryBuilders.matchQuery("fileId", fileId)); + filterQuery.must(QueryBuilders.matchQuery("fileId", fileId)); } - return entireQuery; + return QueryBuilders.boolQuery().filter(filterQuery).must(entireQuery); }