diff --git a/.classpath b/.classpath
index ccc0156a897a85224341fea9fd94fe7820a6f65b..31241a58a2d6f267db435b5a462f4466f2994fec 100644
--- a/.classpath
+++ b/.classpath
@@ -32,7 +32,6 @@
 	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
 		<attributes>
-			<attribute name="module" value="true"/>
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
diff --git a/.externalToolBuilders/mvnw clean generate-sources.launch b/.externalToolBuilders/mvnw clean generate-sources.launch
new file mode 100644
index 0000000000000000000000000000000000000000..b62026656baf3b7c682922706ed85d0947c554e3
--- /dev/null
+++ b/.externalToolBuilders/mvnw clean generate-sources.launch	
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType">
+    <stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;resources&gt;&#13;&#10;&lt;item path=&quot;/gitsearch/target/generated-sources&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item path=&quot;/gitsearch/target/generated-test-sources&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/resources&gt;}"/>
+    <booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+    <stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/gitsearch/mvnw.cmd}"/>
+    <stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+    <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="generate-sources"/>
+    <booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+    <stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/gitsearch}"/>
+</launchConfiguration>
diff --git a/.gitignore b/.gitignore
index d69fe7afe398ddfab81c0b56cd7aad7a4769746d..eb314f1436cf4862f5d1403630118baaf2a2470c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,11 +33,6 @@ local.properties
 .loadpath
 .factorypath
 
-# External tool builders
-.externalToolBuilders/**
-
-# Locally stored "Eclipse launch configurations"
-*.launch
 
 # CDT-specific
 .cproject
diff --git a/.project b/.project
index 952dd9d4e3e4a45c2ebd57a521c331075a915ff6..1b4a4eb108290395d77debd5e395d53dd3576679 100644
--- a/.project
+++ b/.project
@@ -7,7 +7,7 @@
 	<buildSpec>
 		<buildCommand>
 			<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
-			<triggers>auto,full,incremental,</triggers>
+			<triggers>full,incremental,</triggers>
 			<arguments>
 				<dictionary>
 					<key>LaunchConfigHandle</key>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
index 9473f98a3bac422998565c357b4ed94cba33569f..35dba3ec363f099ccef5253d545e39a9f8768b6d 100644
--- a/.settings/org.eclipse.core.resources.prefs
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -5,4 +5,7 @@ encoding//src/main/webapp/i18n/de/global.json=UTF-8
 encoding//src/main/webapp/i18n/de/search.json=UTF-8
 encoding//src/test/java=UTF-8
 encoding//src/test/resources=UTF-8
+encoding//src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content1.json=UTF-8
+encoding//src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content2.json=UTF-8
+encoding//src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content3.json=UTF-8
 encoding/<project>=UTF-8
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 c8d471d9c3e65e48e9478799d53b2a2d3a7e198f..97afa652de1637efd7381da609154109af162c2a 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
@@ -46,13 +46,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 
 import at.ac.uibk.gitsearch.config.ApplicationProperties;
-import at.ac.uibk.gitsearch.service.StatisticsService;
 import at.ac.uibk.gitsearch.service.dto.AutoCompleteEntry;
 import at.ac.uibk.gitsearch.service.dto.SearchInputDTO;
 import at.ac.uibk.gitsearch.service.dto.SearchResultDTO;
 import at.ac.uibk.gitsearch.service.dto.SearchResultsDTO;
 import at.ac.uibk.gitsearch.service.dto.UserProvidedMetadataDTO.Person;
-import at.ac.uibk.gitsearch.service.impl.StatisticsServiceImpl;
 
 @Repository
 public class MetaDataRepository {
@@ -65,13 +63,9 @@ public class MetaDataRepository {
 
 	private static final int FRAGMENT_SIZE = 5000;
 
-    private final StatisticsService statisticsService;
-
-
-	public MetaDataRepository(RestHighLevelClient elasticsearchClient, ApplicationProperties properties, StatisticsService statisticsService) {
+	public MetaDataRepository(RestHighLevelClient elasticsearchClient, ApplicationProperties properties) {
 		this.elasticsearchClient = elasticsearchClient;
 		this.properties = properties;
-		this.statisticsService = statisticsService;
 
 	}
 
@@ -312,37 +306,45 @@ public class MetaDataRepository {
 						.multiMatchQuery(term, SearchRepositoryConstants.METADATA_DESCRIPTION,
 								SearchRepositoryConstants.METADATA_KEYWORDS, SearchRepositoryConstants.METADATA_TITLE)
 						.type(MultiMatchQueryBuilder.Type.PHRASE_PREFIX)));
-		queryBuilder.must(fullTextBuilder);
+		if(fullTextBuilder.hasClauses())
+			queryBuilder.must(fullTextBuilder);
 
 		BoolQueryBuilder plBuilder = QueryBuilders.boolQuery();
-		forEachTerm(searchInputDTO.getMetadata().getProgrammingLanguage(), term -> queryBuilder
+		forEachTerm(searchInputDTO.getMetadata().getProgrammingLanguage(), term -> plBuilder
 				.should(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_PROGRAMMING_LANGUAGES, term)));
-		queryBuilder.must(plBuilder);
+		if(plBuilder.hasClauses())
+			queryBuilder.must(plBuilder);
 
 		BoolQueryBuilder keywordBuilder = QueryBuilders.boolQuery();
-		forEachTerm(searchInputDTO.getMetadata().getKeyword(), term -> queryBuilder
+		forEachTerm(searchInputDTO.getMetadata().getKeyword(), term -> keywordBuilder
 				.should(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_KEYWORDS, term)));
-		queryBuilder.must(keywordBuilder);
+		if(keywordBuilder.hasClauses())
+			queryBuilder.must(keywordBuilder);
 
 		BoolQueryBuilder authorBuilder = QueryBuilders.boolQuery();
 		if (searchInputDTO.getMetadata().getAuthor() != null)
-			queryBuilder.should(QueryBuilders
+			authorBuilder.should(QueryBuilders
 					.multiMatchQuery(searchInputDTO.getMetadata().getAuthor(),
 							SearchRepositoryConstants.METADATA_CREATOR, SearchRepositoryConstants.METADATA_CONTRIBUTOR,
 							SearchRepositoryConstants.METADATA_PUBLISHER)
 					.type(MultiMatchQueryBuilder.Type.PHRASE_PREFIX));
-		queryBuilder.must(authorBuilder);
+		if(authorBuilder.hasClauses())
+			queryBuilder.must(authorBuilder);
 		
 		if (searchInputDTO.getMetadata().getTypes()!=null && !searchInputDTO.getMetadata().getTypes().isEmpty()) {
 			BoolQueryBuilder typeBuilder = QueryBuilders.boolQuery();
 			searchInputDTO.getMetadata().getTypes().forEach(
 						type -> typeBuilder.should(QueryBuilders.matchQuery(SearchRepositoryConstants.METADATA_TYPE, type.getExternalName())));
-			queryBuilder.must(typeBuilder);
+			if(typeBuilder.hasClauses())
+				queryBuilder.must(typeBuilder);
 		}
-		
+
+		forEachTerm(searchInputDTO.getMetadata().getLicense(),
+				term -> queryBuilder.must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_LICENSE, term)));
+
 		// Authorization restrictions
 		final MatchQueryBuilder publicQuery = QueryBuilders.matchQuery(SearchRepositoryConstants.PROJECT_VISIBILITY, "public")
-				.fuzzyTranspositions(false).autoGenerateSynonymsPhraseQuery(false);
+				.fuzzyTranspositions(false).autoGenerateSynonymsPhraseQuery(false).boost(0.0f);
 		if(user.isEmpty()) {
 			 queryBuilder
 				.must(publicQuery);
@@ -351,19 +353,18 @@ public class MetaDataRepository {
 			// TODO: this is not yet perfect :-( prefix query on namespace is not correct. We need to check for the longest prefix
 			// better: Make a gitlab api call to all my project I have read access (and that are not public)
 			final Collection<GrantedAuthority> authorities = user.get().getAuthorities();
-			final BoolQueryBuilder authQuery = QueryBuilders.boolQuery();
+			final BoolQueryBuilder authQuery = QueryBuilders.boolQuery().boost(0.0f);
 			final Stream<QueryBuilder> prefixAuthQueries = authorities.stream()
 			  .filter(auth -> !auth.getAuthority().startsWith("ROLE"))
 			  .filter(auth -> !auth.getAuthority().startsWith("SCOPE"))
 			  .map(auth -> QueryBuilders.prefixQuery(SearchRepositoryConstants.PROJECT_NAMESPACE, auth.getAuthority()));
 			prefixAuthQueries.forEach(pq -> {authQuery.should(pq);});
-			
-			queryBuilder.must(QueryBuilders.boolQuery().should(authQuery).should(publicQuery));
+			if(authQuery.hasClauses())
+				queryBuilder.must(QueryBuilders.boolQuery().should(authQuery).should(publicQuery));
+			else
+				queryBuilder.must(publicQuery);
 		}
 
-		forEachTerm(searchInputDTO.getMetadata().getLicense(),
-				term -> queryBuilder.must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_LICENSE, term)));
-
 		char[] boundaryChars = { '\n' };
 
 		HighlightBuilder highlightBuilder = new HighlightBuilder().highlighterType("plain")
@@ -391,7 +392,7 @@ public class MetaDataRepository {
 		float maxScore = searchResponse.getHits().getMaxScore();
         ObjectMapper objectMapper = new ObjectMapper();
         objectMapper.registerModule(new JavaTimeModule());
-		objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 
         final List<SearchResultDTO> searchResults = new ArrayList<>();
         for (SearchHit searchHit : searchResponse.getHits().getHits()) {
diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml
index 5ab2710ef8894958d77c93f31a179258fac8428d..1b933ff69b3d7c142ba4370017a9eff85e71793d 100644
--- a/src/main/resources/config/application-dev.yml
+++ b/src/main/resources/config/application-dev.yml
@@ -79,7 +79,7 @@ spring:
             issuer-uri: https://sharing.codeability-austria.uibk.ac.at
         registration:
           gitlabOidc:
-            client-id: ${gitsearch.oauthToken}
+            client-id: 149276ac11138d9ba72fb3cd12815e3fa2f372866df0eac0f7d1aae5fdffea24
             client-secret: 6f480635241f420a361581f4837594ea6f48f5ee6f515c1aa89f325dd922dbb0
 
 server:
@@ -147,4 +147,4 @@ application:
    - "http://localhost:8082/api/sharingPluginConfig"
   gitlab:
    url: https://sharing.codeability-austria.uibk.ac.at/
-   generalAccessToken: L8971ypHA-A84Rh6k2GS
\ No newline at end of file
+   generalAccessToken: zPxPmJE3UXAZJpBzxqej
\ No newline at end of file
diff --git a/src/main/webapp/content/scss/global.scss b/src/main/webapp/content/scss/global.scss
index 364d0a15869c7dc1974d99ca9b1d0a6670b5bf4c..a7235b928817118b56c5d9931e2da00dead855be 100644
--- a/src/main/webapp/content/scss/global.scss
+++ b/src/main/webapp/content/scss/global.scss
@@ -1,3 +1,6 @@
 @import 'bootstrap4.5.2.min';
 @import 'navbar';
 
+.dropdown-item.active, .dropdown-item:active {
+  background-color: #aaaaaa;
+}
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 99cac016e1a09388db6381962ae94584eeda4434..c800878df5c5ee836f0ed22e218144cc2058f29c 100644
--- a/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java
+++ b/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java
@@ -91,7 +91,7 @@ public class SearchServiceIT {
 
 	@Test
 	public void testProgrammingLanguageSearch() throws Exception {
-		final SearchInputMetadataDTO searchMetadata = new SearchInputMetadataDTO("JAVA", null, null, null, null);
+		final SearchInputMetadataDTO searchMetadata = new SearchInputMetadataDTO("Java".toLowerCase(), null, null, null, null);
 		SearchInputDTO searchQuery = new SearchInputDTO(null, searchMetadata, null, null, null, 0);
 		SearchResultsDTO searchResultPage = searchService.searchResultPage(searchQuery, 0, SearchInputDTO.PAGE_SIZE);
 
diff --git a/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content1.json b/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content1.json
index b3683d92fa3a73b23ae8a124cc3e95da085e8282..c936ac6eaf94a176a00b83c593ef092b1ce83e01 100644
--- a/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content1.json
+++ b/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content1.json
@@ -33,14 +33,14 @@
             "version" : "1.0",
             "status" : "final",
             "title" : "Meta Test Data 76",
-            "description" : "Dies sind Teile des Einführungskurses an der TU Wien. Momentan hier genutzt zum Testen der Metadateninfrastruktur. Version 1.xxx 3. Zeile",
+            "description" : "Dies sind Teile des Einführungskurses an der TU Wien. Momentan hier genutzt zum Testen der Metadateninfrastruktur. Version 1.xxx 3. Zeile",
             "programmingLanguage" : [
               "Java"
             ],
             "language" : [
               "de"
             ],
-            "educationLevel" : "Anfänger, (to be detailed)",
+            "educationLevel" : "Anfänger, (to be detailed)",
             "audience" : "Anfaenger",
             "keyword" : [
               "Java",
diff --git a/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content2.json b/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content2.json
index 5dff8747ea7707d8b0c3e8e189344446ab854b03..a1eb515efe8dc405aa1726541ae4ed11ecdf5028 100644
--- a/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content2.json
+++ b/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content2.json
@@ -33,14 +33,14 @@
             "version" : "1.0",
             "status" : "final",
             "title" : "Meta Test Data 76",
-            "description" : "Dies sind Teile des Einführungskurses an der TU Wien. Momentan hier genutzt zum Testen der Metadateninfrastruktur. Version 1.xxx 3. Zeile",
+            "description" : "Dies sind Teile des Einführungskurses an der TU Wien. Momentan hier genutzt zum Testen der Metadateninfrastruktur. Version 1.xxx 3. Zeile",
             "programmingLanguage" : [
               "Java"
             ],
             "language" : [
               "de"
             ],
-            "educationLevel" : "Anfänger, (to be detailed)",
+            "educationLevel" : "Anfänger, (to be detailed)",
             "audience" : "Anfaenger",
             "keyword" : [
               "Java",
diff --git a/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content3.json b/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content3.json
index 288050dbb1d99e116da91c7d104ca0aed4e97491..719cb9b63bde7e531d35a830209c59ec020ecf1d 100644
--- a/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content3.json
+++ b/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/content3.json
@@ -33,14 +33,14 @@
             "version" : "1.0",
             "status" : "final",
             "title" : "Meta Test Data 76",
-            "description" : "Dies sind Teile des Einführungskurses an der TU Wien. Momentan hier genutzt zum Testen der Metadateninfrastruktur. Version 1.xxx 3. Zeile",
+            "description" : "Dies sind Teile des Einführungskurses an der TU Wien. Momentan hier genutzt zum Testen der Metadateninfrastruktur. Version 1.xxx 3. Zeile",
             "programmingLanguage" : [
               "Java"
             ],
             "language" : [
               "de"
             ],
-            "educationLevel" : "Anfänger, (to be detailed)",
+            "educationLevel" : "Anfänger, (to be detailed)",
             "audience" : "Anfaenger",
             "keyword" : [
               "Java",
diff --git a/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/es_metadata.schema.json b/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/es_metadata.schema.json
index 6e567c18e789636dbe4a1d227c105bc90b3afd04..6922d5b091ccc5ad8f7f3a88720bb657a7cda053 100644
--- a/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/es_metadata.schema.json
+++ b/src/test/resources/at/ac/uibk/gitsearch/repository/search/testData/es_metadata.schema.json
@@ -12,6 +12,7 @@
     },
     "mappings" : {
       "_doc" : {
+
         "properties" : {
           "file" : {
             "properties" : {
@@ -196,5 +197,4 @@
         }
       }
     }
-
-  }
+    }