diff --git a/notification-manager/src/test/java/de/itvsh/kop/notification/user/UserRemoteServiceTest.java b/notification-manager/src/test/java/de/itvsh/kop/notification/user/UserRemoteServiceTest.java index 296fcf20684c04c41ce58c47acbcc85ccb6441d1..2a18404a0eb84d43f21b2442a1d2f46353e9c824 100644 --- a/notification-manager/src/test/java/de/itvsh/kop/notification/user/UserRemoteServiceTest.java +++ b/notification-manager/src/test/java/de/itvsh/kop/notification/user/UserRemoteServiceTest.java @@ -1,15 +1,15 @@ package de.itvsh.kop.notification.user; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + import de.itvsh.kop.user.grpc.recipient.RecipientServiceGrpc.RecipientServiceBlockingStub; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - class UserRemoteServiceTest { @InjectMocks @@ -24,7 +24,7 @@ class UserRemoteServiceTest { class TestRequestRecipients { @Test - void shouldConvertCorrectly(){ + void shouldConvertCorrectly() { when(recipientService.findRecipientByOrganisationsEinheitId(any())).thenReturn(GrpcFindRecipientRequestTestFactory.create()); when(mapper.fromGrpc(any())).thenReturn(RecipientTestFactory.create()); diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImpl.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImpl.java index f24900e2fd9d447ebd235a7295369510d374895b..bac1b5906dd86435f122bdd29d7b8199ebb59504 100644 --- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImpl.java +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImpl.java @@ -6,6 +6,7 @@ import static org.elasticsearch.index.query.QueryBuilders.*; import java.util.Arrays; import java.util.Map; +import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -24,6 +25,8 @@ import de.itvsh.ozg.pluto.vorgang.VorgangHeader; @Repository class SearchVorgangCustomRepositoryImpl implements SearchVorgangCustomRepostitory { + private static final String JOIN_AND = " AND "; + private static final String WILDCARD_PATTERN = "(*%s*)"; private static final String KEYWORD = ".keyword"; private static final float HALF_BOOST = 0.5f; private static final float DOUBLE_BOOST = 2f; @@ -57,8 +60,10 @@ class SearchVorgangCustomRepositoryImpl implements SearchVorgangCustomRepostitor setFilter(request, searchQueryBuilder); - Arrays.stream(request.getQuery().strip().split(" ")).forEach(query -> searchQueryBuilder - .withQuery(queryStringQuery("*" + query + "*").fields(SearchVorgangCustomRepositoryImpl.FIELD_MAP))); + var queryString = Arrays.stream(request.getQuery().strip().split(StringUtils.SPACE)).map( + WILDCARD_PATTERN::formatted).collect(Collectors.joining(JOIN_AND)); + + searchQueryBuilder.withQuery(queryStringQuery(queryString).fields(SearchVorgangCustomRepositoryImpl.FIELD_MAP)); return searchQueryBuilder.withPageable(pageable).build(); } diff --git a/pluto-server/src/main/resources/application-local.yml b/pluto-server/src/main/resources/application-local.yml index d8418bdaa078a0693729cf56e2201262ec24b9df..c529cd33fe196c4c7c80ba34ba3411949770fe66 100644 --- a/pluto-server/src/main/resources/application-local.yml +++ b/pluto-server/src/main/resources/application-local.yml @@ -29,7 +29,7 @@ spring: properties: '[mail.smtp.starttls.enable]': true elasticsearch: - #uris: http://localhost:9200 + uris: http://localhost:9200 username: elastic password: password diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchServiceITCase.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchServiceITCase.java index a2272b0aae88875ba17ff896306affba498a2bd1..41ee8307e061a80be2c838ffb4329b89bd2988dc 100644 --- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchServiceITCase.java +++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchServiceITCase.java @@ -123,7 +123,7 @@ public class SearchServiceITCase { void shouldFindByAntragstellerNameAndAktenzeichen() { var res = searchService .find(FindVorgangRequestTestFactory.createBuilder() - .searchBy(IndexedVorgangTestFactory.ANTRAGSTELLER_NAME + " test") + .searchBy(IndexedVorgangTestFactory.ANTRAGSTELLER_NAME + " tes") .filterBy(FilterCriteriaTestFactory.createBuilder().clearStatus().assignedTo(null).build()) .build()); diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImplTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImplTest.java index 20a67199ff2ceabe22f83460f5f4a2c7907dca30..bdc49a9a4394e842ca4cdd57db01b684124f19a7 100644 --- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImplTest.java +++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImplTest.java @@ -81,12 +81,11 @@ class SearchVorgangCustomRepositoryImplTest { } @Test - void shouldHaveQuery() { + void shouldHaveFieldsWithWights() { var request = SearchRequestTestFactory.create(); var query = searchRepostitory.createQuery(request, PageRequest.of(request.getOffSet(), request.getLimit())); assertThat(query.getQuery()).isNotNull(); - assertThat(query.getQuery()).asString().contains("\"query\" : \"*vors*\""); assertThat(query.getQuery()).asString().contains("aktenzeichen^2.0"); assertThat(query.getQuery()).asString().contains("antragstellerName^1.0"); assertThat(query.getQuery()).asString().contains("antragstellerVorname^1.0"); @@ -94,6 +93,22 @@ class SearchVorgangCustomRepositoryImplTest { assertThat(query.getQuery()).asString().contains("vorgangNummer^2.0"); } + @Test + void shouldHaveSimpleQuery() { + var request = SearchRequestTestFactory.create(); + var query = searchRepostitory.createQuery(request, PageRequest.of(request.getOffSet(), request.getLimit())); + + assertThat(query.getQuery()).asString().contains("\"query\" : \"(*vors*)\""); + } + + @Test + void shouldHaveQuery() { + var request = SearchRequestTestFactory.createBuilder().query("vors test").build(); + var query = searchRepostitory.createQuery(request, PageRequest.of(request.getOffSet(), request.getLimit())); + + assertThat(query.getQuery()).asString().contains("\"query\" : \"(*vors*) AND (*test*)\""); + } + @Nested class forRolePoststelle { @Test