changed search API params to page and pagesize RED-1826
This commit is contained in:
parent
ead3a461fb
commit
4664245526
@ -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>
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
|
||||
@ -17,6 +17,8 @@ public class SectionText {
|
||||
private int sectionNumber;
|
||||
private String headline;
|
||||
private String text;
|
||||
|
||||
@Builder.Default
|
||||
private List<SectionArea> sectionAreas = new ArrayList<>();
|
||||
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user