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