From a82525052998288bcf088c350c48807657726c7f Mon Sep 17 00:00:00 2001 From: "michael.breu" <michael.breu@uibk.ac.at> Date: Mon, 22 Feb 2021 15:35:15 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20f=C3=BCr=20#46=20(Suche=20nach=20Autoren/?= =?UTF-8?q?Contributors/Publisher)=20funktioniert=20jetzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/search/MetaDataRepository.java | 12 +++++++++--- .../search/SearchRepositoryConstants.java | 1 + .../uibk/gitsearch/service/SearchServiceIT.java | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/ac/uibk/gitsearch/repository/search/MetaDataRepository.java b/src/main/java/at/ac/uibk/gitsearch/repository/search/MetaDataRepository.java index a7fb60409..45aae2199 100644 --- a/src/main/java/at/ac/uibk/gitsearch/repository/search/MetaDataRepository.java +++ b/src/main/java/at/ac/uibk/gitsearch/repository/search/MetaDataRepository.java @@ -223,9 +223,15 @@ public class MetaDataRepository { term -> queryBuilder.must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_KEYWORDS, term))); - forEachTerm(searchInputDTO.getMetadata().getAuthor(), - term -> - queryBuilder.must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_CREATOR, term))); + if(searchInputDTO.getMetadata().getAuthor()!=null) + queryBuilder.must(QueryBuilders.multiMatchQuery(searchInputDTO.getMetadata().getAuthor(), + SearchRepositoryConstants.METADATA_CREATOR, + SearchRepositoryConstants.METADATA_CONTRIBUTOR, + SearchRepositoryConstants.METADATA_PUBLISHER).type(MultiMatchQueryBuilder.Type.PHRASE_PREFIX)); + +// forEachTerm(searchInputDTO.getMetadata().getAuthor(), +// term -> +// queryBuilder.must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_CREATOR, term))); forEachTerm(searchInputDTO.getMetadata().getLicense(), term -> diff --git a/src/main/java/at/ac/uibk/gitsearch/repository/search/SearchRepositoryConstants.java b/src/main/java/at/ac/uibk/gitsearch/repository/search/SearchRepositoryConstants.java index 8dffd6230..f706accf7 100644 --- a/src/main/java/at/ac/uibk/gitsearch/repository/search/SearchRepositoryConstants.java +++ b/src/main/java/at/ac/uibk/gitsearch/repository/search/SearchRepositoryConstants.java @@ -21,5 +21,6 @@ public final class SearchRepositoryConstants { public static final String METADATA_PROJECT_ID = "project.project_id"; public static final String METADATA_CREATOR = "metadata.creator.name"; public static final String METADATA_CONTRIBUTOR = "metadata.contributor.name"; + public static final String METADATA_PUBLISHER = "metadata.publisher.name"; public static final String METADATA_LICENSE = "metadata.license"; } diff --git a/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java b/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java index e1397ec6c..cc6ad6bcf 100644 --- a/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java +++ b/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java @@ -56,6 +56,23 @@ public class SearchServiceIT { } + @Test + public void testSearchByAutor() throws Exception { + final String PODLIPNIG = "Stefan Podlipnig"; + final SearchInputMetadataDTO searchMetadata = + new SearchInputMetadataDTO(null, null, null, null, PODLIPNIG); + SearchInputDTO searchQuery = + new SearchInputDTO(null, searchMetadata, null, null, null, 0); + SearchResultsDTO searchResultPage = + searchService.searchResultPage(searchQuery, 0, SearchInputDTO.PAGE_SIZE); + + org.junit.Assert.assertNotNull(searchResultPage.getSearchResult()); + org.junit.Assert.assertTrue("At least one test hit", searchResultPage.getHitCount() >= 1); + org.junit.Assert.assertThat(searchResultPage.getSearchResult(), everyItem( + hasProperty("creator", hasProperty("name", containsString(PODLIPNIG)))) + ); + + } @Test public void testProgrammingLanguageSearch() throws Exception { final SearchInputMetadataDTO searchMetadata = -- GitLab