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);
+
}
}