changed search API params to page and pagesize RED-1826

This commit is contained in:
Timo Bejan 2021-07-29 11:39:38 +03:00
parent ead3a461fb
commit 4664245526
6 changed files with 31 additions and 17 deletions

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>platform-dependency</artifactId>
<groupId>com.iqser.red</groupId>
<version>1.1.2</version>
<version>1.1.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -27,7 +27,7 @@
<dependency>
<groupId>com.iqser.red</groupId>
<artifactId>platform-commons-dependency</artifactId>
<version>1.3.1</version>
<version>1.3.6</version>
<scope>import</scope>
<type>pom</type>
</dependency>

View File

@ -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<String> dossierIds;
private String fileId;
private int page;
private int pageSize;

View File

@ -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());
}

View File

@ -17,6 +17,8 @@ public class SectionText {
private int sectionNumber;
private String headline;
private String text;
@Builder.Default
private List<SectionArea> sectionAreas = new ArrayList<>();
}

View File

@ -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<String> 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<String> 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) {

View File

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