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:
commit
bb3606b03b
@ -103,6 +103,9 @@ public class SearchService {
|
|||||||
entireQuery.should(nestedQuery);
|
entireQuery.should(nestedQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BoolQueryBuilder filterQuery = QueryBuilders.boolQuery();
|
||||||
|
|
||||||
if (dossierTemplateIds != null && !dossierTemplateIds.isEmpty()) {
|
if (dossierTemplateIds != null && !dossierTemplateIds.isEmpty()) {
|
||||||
|
|
||||||
var dossierTemplateIdQueryBuilder = QueryBuilders.boolQuery();
|
var dossierTemplateIdQueryBuilder = QueryBuilders.boolQuery();
|
||||||
@ -111,7 +114,7 @@ public class SearchService {
|
|||||||
dossierTemplateIdQueryBuilder = dossierTemplateIdQueryBuilder.should(QueryBuilders.matchQuery("dossierTemplateId", dossierTemplateId));
|
dossierTemplateIdQueryBuilder = dossierTemplateIdQueryBuilder.should(QueryBuilders.matchQuery("dossierTemplateId", dossierTemplateId));
|
||||||
}
|
}
|
||||||
|
|
||||||
entireQuery.filter(dossierTemplateIdQueryBuilder);
|
filterQuery.must(dossierTemplateIdQueryBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dossierIds != null && !dossierIds.isEmpty()) {
|
if (dossierIds != null && !dossierIds.isEmpty()) {
|
||||||
@ -122,15 +125,15 @@ public class SearchService {
|
|||||||
dossierIdQueryBuilder = dossierIdQueryBuilder.should(QueryBuilders.matchQuery("dossierId", dossierId));
|
dossierIdQueryBuilder = dossierIdQueryBuilder.should(QueryBuilders.matchQuery("dossierId", dossierId));
|
||||||
}
|
}
|
||||||
|
|
||||||
entireQuery.filter(dossierIdQueryBuilder);
|
filterQuery.must(dossierIdQueryBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (fileId != null) {
|
if (fileId != null) {
|
||||||
entireQuery.filter(QueryBuilders.matchQuery("fileId", fileId));
|
filterQuery.must(QueryBuilders.matchQuery("fileId", fileId));
|
||||||
}
|
}
|
||||||
|
|
||||||
return entireQuery;
|
return QueryBuilders.boolQuery().filter(filterQuery).must(entireQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
documentIndexService.indexDocument("template2", "dossierId2", "fileId2", "S-Metolachlor_RAR_01_Volume_1_2018-09-06.pdf", text2);
|
||||||
|
|
||||||
// Act & Assert 1
|
// 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
|
// Act
|
||||||
documentDeleteService.deleteDocument("fileId1");
|
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);
|
SearchResult result = searchService.search(searchString, null, Arrays.asList("dossierId1"), null, 1, 10, true);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertThat(result.getMatchedDocuments().size()).isEqualTo(1);
|
assertThat(result.getMatchedDocuments().size()).isEqualTo(0);
|
||||||
assertThat(result.getMatchedDocuments().get(0).getMatchedTerms().size()).isEqualTo(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user