(query-service) Apply blacklisting to search results

This commit is contained in:
Viktor Lofgren 2023-10-09 15:18:53 +02:00
parent 3889c4bdd9
commit 397a85eaa4

View File

@ -3,8 +3,10 @@ package nu.marginalia.query;
import com.google.gson.Gson;
import com.google.inject.Inject;
import nu.marginalia.client.Context;
import nu.marginalia.db.DomainBlacklist;
import nu.marginalia.index.client.IndexClient;
import nu.marginalia.index.client.model.query.SearchSpecification;
import nu.marginalia.index.client.model.results.DecoratedSearchResultItem;
import nu.marginalia.index.client.model.results.SearchResultSet;
import nu.marginalia.query.model.QueryParams;
import nu.marginalia.query.model.QueryResponse;
@ -21,17 +23,20 @@ public class QueryService extends Service {
private final IndexClient indexClient;
private final Gson gson;
private final DomainBlacklist blacklist;
private final QueryFactory queryFactory;
@Inject
public QueryService(BaseServiceParams params,
IndexClient indexClient,
Gson gson,
DomainBlacklist blacklist,
QueryFactory queryFactory)
{
super(params);
this.indexClient = indexClient;
this.gson = gson;
this.blacklist = blacklist;
this.queryFactory = queryFactory;
Spark.post("/delegate/", this::delegateToIndex, gson::toJson);
@ -45,6 +50,8 @@ public class QueryService extends Service {
var query = queryFactory.createQuery(params);
var rsp = executeQuery(Context.fromRequest(request), query.specs);
rsp.results.removeIf(this::isBlacklisted);
response.type("application/json");
return new QueryResponse(
@ -68,4 +75,8 @@ public class QueryService extends Service {
private SearchResultSet executeQuery(Context ctx, SearchSpecification query) {
return indexClient.query(ctx, query);
}
private boolean isBlacklisted(DecoratedSearchResultItem item) {
return blacklist.isBlacklisted(item.domainId());
}
}