(search) Filter blacklisted items in API query service as well

This commit is contained in:
Viktor Lofgren 2023-10-07 16:16:04 +02:00
parent 235bb6c1b9
commit 9e0367eef4

View File

@ -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()));
}