mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 21:18:58 +00:00
(query-service) Apply blacklisting to search results
This commit is contained in:
parent
3889c4bdd9
commit
397a85eaa4
@ -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());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user