Pull request #17: RED-2472: Fixed wrong usage of filter query that leads to false positives

Merge in RED/search-service from RED-2472 to master

* commit 'fab1932e7b95f4f2341bb3df5110b555cf6c7305':
  RED-2472: Fixed wrong usage of filter query that leads to false positives
This commit is contained in:
Dominique Eiflaender 2021-10-18 13:29:30 +02:00
commit bb3606b03b
2 changed files with 10 additions and 8 deletions

View File

@ -103,6 +103,9 @@ public class SearchService {
entireQuery.should(nestedQuery);
}
BoolQueryBuilder filterQuery = QueryBuilders.boolQuery();
if (dossierTemplateIds != null && !dossierTemplateIds.isEmpty()) {
var dossierTemplateIdQueryBuilder = QueryBuilders.boolQuery();
@ -111,7 +114,7 @@ public class SearchService {
dossierTemplateIdQueryBuilder = dossierTemplateIdQueryBuilder.should(QueryBuilders.matchQuery("dossierTemplateId", dossierTemplateId));
}
entireQuery.filter(dossierTemplateIdQueryBuilder);
filterQuery.must(dossierTemplateIdQueryBuilder);
}
if (dossierIds != null && !dossierIds.isEmpty()) {
@ -122,15 +125,15 @@ public class SearchService {
dossierIdQueryBuilder = dossierIdQueryBuilder.should(QueryBuilders.matchQuery("dossierId", dossierId));
}
entireQuery.filter(dossierIdQueryBuilder);
filterQuery.must(dossierIdQueryBuilder);
}
if (fileId != null) {
entireQuery.filter(QueryBuilders.matchQuery("fileId", fileId));
filterQuery.must(QueryBuilders.matchQuery("fileId", fileId));
}
return entireQuery;
return QueryBuilders.boolQuery().filter(filterQuery).must(entireQuery);
}

View File

@ -59,9 +59,9 @@ public class IndexCreatorTest extends AbstractElasticsearchIntegrationTest {
documentIndexService.indexDocument("template2", "dossierId2", "fileId2", "S-Metolachlor_RAR_01_Volume_1_2018-09-06.pdf", text2);
// Act & Assert 1
SearchResult result = searchService.search("hans klaus single", null, null, null, 1, 10, true);
SearchResult result = searchService.search("S-Metolachlor", null, Arrays.asList("dossierId1", "dossierId2"), null, 1, 10, false);
assertThat(result.getMatchedDocuments().size()).isEqualTo(2);
assertThat(result.getMatchedDocuments().size()).isEqualTo(1);
// Act
documentDeleteService.deleteDocument("fileId1");
@ -100,8 +100,7 @@ public class IndexCreatorTest extends AbstractElasticsearchIntegrationTest {
SearchResult result = searchService.search(searchString, null, Arrays.asList("dossierId1"), null, 1, 10, true);
// Assert
assertThat(result.getMatchedDocuments().size()).isEqualTo(1);
assertThat(result.getMatchedDocuments().get(0).getMatchedTerms().size()).isEqualTo(0);
assertThat(result.getMatchedDocuments().size()).isEqualTo(0);
}