From 4664245526b42dfe41fb02428bb877d7a1c102f6 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Thu, 29 Jul 2021 11:39:38 +0300 Subject: [PATCH] changed search API params to page and pagesize RED-1826 --- search-service-v1/pom.xml | 4 +-- .../search/v1/model/SearchRequest.java | 4 ++- .../server/controller/SearchController.java | 2 +- .../search/v1/server/model/SectionText.java | 2 ++ .../v1/server/service/SearchService.java | 25 +++++++++++-------- .../v1/server/service/IndexCreatorTest.java | 11 ++++++-- 6 files changed, 31 insertions(+), 17 deletions(-) diff --git a/search-service-v1/pom.xml b/search-service-v1/pom.xml index 20b2cbf..682d871 100644 --- a/search-service-v1/pom.xml +++ b/search-service-v1/pom.xml @@ -5,7 +5,7 @@ platform-dependency com.iqser.red - 1.1.2 + 1.1.3 4.0.0 @@ -27,7 +27,7 @@ com.iqser.red platform-commons-dependency - 1.3.1 + 1.3.6 import pom diff --git a/search-service-v1/search-service-api-v1/src/main/java/com/iqser/red/service/search/v1/model/SearchRequest.java b/search-service-v1/search-service-api-v1/src/main/java/com/iqser/red/service/search/v1/model/SearchRequest.java index 36e062a..10863fd 100644 --- a/search-service-v1/search-service-api-v1/src/main/java/com/iqser/red/service/search/v1/model/SearchRequest.java +++ b/search-service-v1/search-service-api-v1/src/main/java/com/iqser/red/service/search/v1/model/SearchRequest.java @@ -5,6 +5,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + @Data @Builder @NoArgsConstructor @@ -12,7 +14,7 @@ import lombok.NoArgsConstructor; public class SearchRequest { private String queryString; - private String dossierId; + private List dossierIds; private String fileId; private int page; private int pageSize; diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/controller/SearchController.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/controller/SearchController.java index 517c497..1ca0b83 100644 --- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/controller/SearchController.java +++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/controller/SearchController.java @@ -19,7 +19,7 @@ public class SearchController implements SearchResource { public SearchResult getDossierStatus(@RequestBody SearchRequest searchRequest) { - return searchService.search(searchRequest.getQueryString(), searchRequest.getDossierId(), searchRequest.getFileId(), searchRequest + return searchService.search(searchRequest.getQueryString(), searchRequest.getDossierIds(), searchRequest.getFileId(), searchRequest .getPage(), searchRequest.getPageSize(), searchRequest.isReturnSections()); } diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/model/SectionText.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/model/SectionText.java index f472cf1..1e51f63 100644 --- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/model/SectionText.java +++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/model/SectionText.java @@ -17,6 +17,8 @@ public class SectionText { private int sectionNumber; private String headline; private String text; + + @Builder.Default private List sectionAreas = new ArrayList<>(); } 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 122e842..9aa8011 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 @@ -4,11 +4,7 @@ import static com.iqser.red.service.search.v1.server.exception.IndexException.FA import static com.iqser.red.service.search.v1.server.service.IndexCreatorService.INDEX_NAME; import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Locale; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -48,13 +44,13 @@ public class SearchService { private final ElasticsearchClient client; - public SearchResult search(String queryString, String dossierId, String fileId, int page, int pageSize, + public SearchResult search(String queryString, List dossierIds, String fileId, int page, int pageSize, boolean returnSections) { Query query = QueryStringConverter.convert(queryString); - SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(convertQuery(query, dossierId, fileId, returnSections)) - .from((page-1)*pageSize) + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(convertQuery(query, dossierIds, fileId, returnSections)) + .from((page - 1) * pageSize) .size(pageSize) .fetchSource(new String[]{"dossierId", "fileId"}, new String[]{"sections"}) .highlighter(new HighlightBuilder().field("sections.text").field("filename").highlighterType("fvh")) @@ -78,7 +74,7 @@ public class SearchService { } - private QueryBuilder convertQuery(Query query, String dossierId, String fileId, boolean returnSections) { + private QueryBuilder convertQuery(Query query, List dossierIds, String fileId, boolean returnSections) { BoolQueryBuilder entireQuery = QueryBuilders.boolQuery(); BoolQueryBuilder sectionsQueries = QueryBuilders.boolQuery(); @@ -113,8 +109,15 @@ public class SearchService { entireQuery.should(nestedQuery); } - if (dossierId != null) { - entireQuery.filter(QueryBuilders.matchQuery("dossierId", dossierId)); + if (dossierIds != null && !dossierIds.isEmpty()) { + + var dossierIdQueryBuilder = QueryBuilders.boolQuery(); + + for (var dossierId : dossierIds) { + dossierIdQueryBuilder = dossierIdQueryBuilder.should(QueryBuilders.matchQuery("dossierId", dossierId)); + } + + entireQuery.filter(dossierIdQueryBuilder); } if (fileId != null) { diff --git a/search-service-v1/search-service-server-v1/src/test/java/com/iqser/red/service/search/v1/server/service/IndexCreatorTest.java b/search-service-v1/search-service-server-v1/src/test/java/com/iqser/red/service/search/v1/server/service/IndexCreatorTest.java index 7e3ab5c..541954d 100644 --- a/search-service-v1/search-service-server-v1/src/test/java/com/iqser/red/service/search/v1/server/service/IndexCreatorTest.java +++ b/search-service-v1/search-service-server-v1/src/test/java/com/iqser/red/service/search/v1/server/service/IndexCreatorTest.java @@ -3,7 +3,9 @@ package com.iqser.red.service.search.v1.server.service; import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; +import java.util.Arrays; +import org.apache.commons.compress.utils.Lists; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -53,15 +55,20 @@ public class IndexCreatorTest extends AbstractElasticsearchIntegrationTest { documentIndexService.indexDocument("dossierId", "fileId", "Single Study - Oral (Gavage) Mouse.pdf", text); documentIndexService.indexDocument("dossierId2", "fileId2", "S-Metolachlor_RAR_01_Volume_1_2018-09-06.pdf", text2); - SearchResult result = searchService.search("hans klaus single", null, null, 0, 10, true); + SearchResult result = searchService.search("hans klaus single", null, null, 1, 10, true); assertThat(result.getMatchedDocuments().size()).isEqualTo(2); documentDeleteService.deleteDocument("fileId"); - result = searchService.search("hans klaus single", null, null, 0, 10, true); + result = searchService.search("hans klaus single", Arrays.asList("dossierId","dossierId2"), null, 1, 10, true); assertThat(result.getMatchedDocuments().size()).isEqualTo(1); + + result = searchService.search("hans klaus single", Arrays.asList("dossierId3","dossierId4"), null, 1, 10, true); + + assertThat(result.getMatchedDocuments().size()).isEqualTo(0); + } }