From 9e0367eef4db6780230aace6cf776966069eafdb Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Sat, 7 Oct 2023 16:16:04 +0200 Subject: [PATCH] (search) Filter blacklisted items in API query service as well --- .../marginalia/search/svc/SearchApiQueryService.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/services-core/search-service/src/main/java/nu/marginalia/search/svc/SearchApiQueryService.java b/code/services-core/search-service/src/main/java/nu/marginalia/search/svc/SearchApiQueryService.java index 8e4e3231..0745891f 100644 --- a/code/services-core/search-service/src/main/java/nu/marginalia/search/svc/SearchApiQueryService.java +++ b/code/services-core/search-service/src/main/java/nu/marginalia/search/svc/SearchApiQueryService.java @@ -3,6 +3,7 @@ package nu.marginalia.search.svc; import com.google.common.base.Strings; import com.google.inject.Inject; import lombok.SneakyThrows; +import nu.marginalia.db.DomainBlacklist; import nu.marginalia.index.client.model.results.SearchResultKeywordScore; import nu.marginalia.search.client.model.ApiSearchResultQueryDetails; import nu.marginalia.model.idx.WordMetadata; @@ -24,10 +25,15 @@ import java.util.stream.Collectors; public class SearchApiQueryService { private SearchOperator searchOperator; + private final DomainBlacklist blacklist; @Inject - public SearchApiQueryService(SearchOperator searchOperator) { + public SearchApiQueryService( + SearchOperator searchOperator, + DomainBlacklist blacklist + ) { this.searchOperator = searchOperator; + this.blacklist = blacklist; } @SneakyThrows @@ -58,6 +64,8 @@ public class SearchApiQueryService { var results = searchOperator.doApiSearch(ctx, new UserSearchParameters(humanQuery, profile, SearchJsParameter.DEFAULT)); + results.removeIf(details -> blacklist.isBlacklisted(details.domainId)); + return new ApiSearchResults("RESTRICTED", humanQuery, results.stream().map(this::convert).limit(limit).collect(Collectors.toList())); }