From d0a1a4a8e709d1bf4e4551aba766573e70805ce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Wed, 7 Jul 2021 11:31:05 +0200 Subject: [PATCH] Fixed matched terms --- .../red/service/search/v1/server/service/SearchService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/SearchService.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/SearchService.java index d6fe629..43747c9 100644 --- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/SearchService.java +++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/SearchService.java @@ -88,7 +88,7 @@ public class SearchService { QueryBuilder textPhraseQuery = QueryBuilders.matchPhraseQuery("sections.text", must.toLowerCase(Locale.ROOT)) .queryName(must); QueryBuilder filenamePhraseQuery = QueryBuilders.matchPhraseQuery("filename", must.toLowerCase(Locale.ROOT)) - .queryName(must); + .queryName("filename." + must); QueryBuilder filenameOrTextMustQuery = QueryBuilders.boolQuery() .should(textPhraseQuery) .should(filenamePhraseQuery); @@ -99,7 +99,7 @@ public class SearchService { QueryBuilder textTermQuery = QueryBuilders.termQuery("sections.text", should.toLowerCase(Locale.ROOT)) .queryName(should); QueryBuilder filenameTermQuery = QueryBuilders.termQuery("filename", should.toLowerCase(Locale.ROOT)) - .queryName(should); + .queryName("filename." + should); entireQuery.should(textTermQuery); entireQuery.should(filenameTermQuery); sectionsQueries.should(textTermQuery); @@ -139,7 +139,7 @@ public class SearchService { private MatchedDocument convertSearchHit(SearchHit hit, Query query) { - Set matchesTerms = Arrays.stream(hit.getMatchedQueries()).collect(Collectors.toSet()); + Set matchesTerms = Arrays.stream(hit.getMatchedQueries()).map(match -> match.contains("filename.") ? match.replace("filename.", "") : match).collect(Collectors.toSet()); Set unmatchedTerms = Stream.concat(query.getMusts().stream(), query.getShoulds().stream()) .filter(term -> !matchesTerms.contains(term)) .collect(Collectors.toSet());