mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-24 13:19:02 +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.gson.Gson;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import nu.marginalia.client.Context;
|
import nu.marginalia.client.Context;
|
||||||
|
import nu.marginalia.db.DomainBlacklist;
|
||||||
import nu.marginalia.index.client.IndexClient;
|
import nu.marginalia.index.client.IndexClient;
|
||||||
import nu.marginalia.index.client.model.query.SearchSpecification;
|
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.index.client.model.results.SearchResultSet;
|
||||||
import nu.marginalia.query.model.QueryParams;
|
import nu.marginalia.query.model.QueryParams;
|
||||||
import nu.marginalia.query.model.QueryResponse;
|
import nu.marginalia.query.model.QueryResponse;
|
||||||
@ -21,17 +23,20 @@ public class QueryService extends Service {
|
|||||||
|
|
||||||
private final IndexClient indexClient;
|
private final IndexClient indexClient;
|
||||||
private final Gson gson;
|
private final Gson gson;
|
||||||
|
private final DomainBlacklist blacklist;
|
||||||
private final QueryFactory queryFactory;
|
private final QueryFactory queryFactory;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public QueryService(BaseServiceParams params,
|
public QueryService(BaseServiceParams params,
|
||||||
IndexClient indexClient,
|
IndexClient indexClient,
|
||||||
Gson gson,
|
Gson gson,
|
||||||
|
DomainBlacklist blacklist,
|
||||||
QueryFactory queryFactory)
|
QueryFactory queryFactory)
|
||||||
{
|
{
|
||||||
super(params);
|
super(params);
|
||||||
this.indexClient = indexClient;
|
this.indexClient = indexClient;
|
||||||
this.gson = gson;
|
this.gson = gson;
|
||||||
|
this.blacklist = blacklist;
|
||||||
this.queryFactory = queryFactory;
|
this.queryFactory = queryFactory;
|
||||||
|
|
||||||
Spark.post("/delegate/", this::delegateToIndex, gson::toJson);
|
Spark.post("/delegate/", this::delegateToIndex, gson::toJson);
|
||||||
@ -45,6 +50,8 @@ public class QueryService extends Service {
|
|||||||
var query = queryFactory.createQuery(params);
|
var query = queryFactory.createQuery(params);
|
||||||
var rsp = executeQuery(Context.fromRequest(request), query.specs);
|
var rsp = executeQuery(Context.fromRequest(request), query.specs);
|
||||||
|
|
||||||
|
rsp.results.removeIf(this::isBlacklisted);
|
||||||
|
|
||||||
response.type("application/json");
|
response.type("application/json");
|
||||||
|
|
||||||
return new QueryResponse(
|
return new QueryResponse(
|
||||||
@ -68,4 +75,8 @@ public class QueryService extends Service {
|
|||||||
private SearchResultSet executeQuery(Context ctx, SearchSpecification query) {
|
private SearchResultSet executeQuery(Context ctx, SearchSpecification query) {
|
||||||
return indexClient.query(ctx, query);
|
return indexClient.query(ctx, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isBlacklisted(DecoratedSearchResultItem item) {
|
||||||
|
return blacklist.isBlacklisted(item.domainId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user