diff --git a/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/data/dao/EdgeDataStoreDaoImpl.java b/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/data/dao/EdgeDataStoreDaoImpl.java index 187175e4..e0c5ea88 100644 --- a/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/data/dao/EdgeDataStoreDaoImpl.java +++ b/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/data/dao/EdgeDataStoreDaoImpl.java @@ -277,7 +277,7 @@ public class EdgeDataStoreDaoImpl implements EdgeDataStoreDao { // this is safe, string concatenation is of integers String inStmt = urlId.stream().map(id -> Integer.toString(id.id())).collect(Collectors.joining(", ", "(", ")")); - var rsp = stmt.executeQuery("SELECT DOMAIN_ID, DOMAIN_NAME FROM EC_URL_VIEW WHERE QUALITY>-10 AND EC_URL_VIEW.ID IN " + inStmt + " ORDER BY RANK ASC"); + var rsp = stmt.executeQuery("SELECT DOMAIN_ID, DOMAIN_NAME FROM EC_URL_VIEW INNER JOIN DOMAIN_METADATA ON EC_URL_VIEW.DOMAIN_ID=DOMAIN_METADATA.ID WHERE QUALITY>-10 AND EC_URL_VIEW.ID IN " + inStmt + " ORDER BY (KNOWN_URLS<1000) ASC, (KNOWN_URLS<2000) ASC"); while (rsp.next()) { int id = rsp.getInt(1); String domain = rsp.getString(2); diff --git a/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/search/EdgeSearchOperator.java b/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/search/EdgeSearchOperator.java index af635e51..aa9b168d 100644 --- a/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/search/EdgeSearchOperator.java +++ b/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/search/EdgeSearchOperator.java @@ -135,8 +135,20 @@ public class EdgeSearchOperator { Set> results = new LinkedHashSet<>(); + List>> iters = new ArrayList<>(); + for (var result : indexClient.queryDomains(ctx, requests)) { - results.addAll(result.results); + iters.add(result.results.iterator()); + } + + while (!iters.isEmpty()) { + iters.removeIf(iter -> { + if (!iter.hasNext()) return true; + else { + results.add(iter.next()); + return false; + } + }); } return edgeDataStoreDao.getBrowseResultFromUrlIds(new ArrayList<>(results));