(search-service) Add indexing indicator to sibling domains listing

This commit is contained in:
Viktor Lofgren 2025-01-08 12:58:34 +01:00
parent a84a06975c
commit 983d6d067c
5 changed files with 26 additions and 11 deletions

View File

@ -103,11 +103,11 @@ public class DbDomainQueries {
}
}
public List<EdgeDomain> otherSubdomains(EdgeDomain domain, int cnt) {
List<EdgeDomain> ret = new ArrayList<>();
public List<DomainWithNode> otherSubdomains(EdgeDomain domain, int cnt) {
List<DomainWithNode> ret = new ArrayList<>();
try (var conn = dataSource.getConnection();
var stmt = conn.prepareStatement("SELECT DOMAIN_NAME FROM EC_DOMAIN WHERE DOMAIN_TOP = ? LIMIT ?")) {
var stmt = conn.prepareStatement("SELECT DOMAIN_NAME, NODE_AFFINITY FROM EC_DOMAIN WHERE DOMAIN_TOP = ? LIMIT ?")) {
stmt.setString(1, domain.topDomain);
stmt.setInt(2, cnt);
@ -118,7 +118,7 @@ public class DbDomainQueries {
if (sibling.equals(domain))
continue;
ret.add(sibling);
ret.add(new DomainWithNode(sibling, rs.getInt(2)));
}
} catch (SQLException e) {
logger.error("Failed to get domain neighbors");
@ -126,4 +126,10 @@ public class DbDomainQueries {
return ret;
}
public record DomainWithNode (EdgeDomain domain, int nodeAffinity) {
public boolean isIndexed() {
return nodeAffinity > 0;
}
}
}

View File

@ -67,8 +67,7 @@ public class ResultRankingParameters {
this.exportDebugData = exportDebugData;
}
public static ResultRankingParameters sensibleDefaults() {
return builder()
private static final ResultRankingParameters _sensibleDefaults = builder()
.bm25Params(new Bm25Parameters(1.2, 0.5))
.shortDocumentThreshold(2000)
.shortDocumentPenalty(2.)
@ -85,6 +84,9 @@ public class ResultRankingParameters {
.exportDebugData(false)
.disablePenalties(false)
.build();
public static ResultRankingParameters sensibleDefaults() {
return _sensibleDefaults;
}
public static ResultRankingParametersBuilder builder() {

View File

@ -352,7 +352,7 @@ public class SearchSiteInfoService {
public record SiteInfoWithContext(String domain,
boolean isSubscribed,
List<EdgeDomain> siblingDomains,
List<DbDomainQueries.DomainWithNode> siblingDomains,
int domainId,
String siteUrl,
boolean hasScreenshot,

View File

@ -1,3 +1,4 @@
@import nu.marginalia.db.DbDomainQueries
@import nu.marginalia.model.EdgeDomain
@import nu.marginalia.search.svc.SearchSiteInfoService
@import nu.marginalia.search.svc.SearchSiteInfoService.*
@ -94,10 +95,14 @@
</tr>
</thead>
<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-600 text-xs">
@for (EdgeDomain sibling : siteInfo.siblingDomains())
@for (DbDomainQueries.DomainWithNode sibling : siteInfo.siblingDomains())
<tr>
<td class="px-3 py-6 md:py-3 whitespace-nowrap">
<a class="text-liteblue dark:text-blue-200" href="/site/${sibling.toString()}">${sibling.toString()}</a>
<a class="text-liteblue dark:text-blue-200" href="/site/${sibling.domain().toString()}">${sibling.domain().toString()}</a>
@if (!sibling.isIndexed())
<i class="ml-1 fa-regular fa-question-circle text-gray-400 dark:text-gray-600 text-xs" title="Not indexed"></i>
@endif
</td>
</tr>
@endfor

View File

@ -6,6 +6,7 @@ import nu.marginalia.api.domains.model.SimilarDomain;
import nu.marginalia.api.searchquery.model.results.SearchResultItem;
import nu.marginalia.browse.model.BrowseResult;
import nu.marginalia.browse.model.BrowseResultSet;
import nu.marginalia.db.DbDomainQueries;
import nu.marginalia.model.EdgeDomain;
import nu.marginalia.model.EdgeUrl;
import nu.marginalia.model.crawl.DomainIndexingState;
@ -132,8 +133,9 @@ public class MockedSearchResults {
return new SearchSiteInfoService.SiteInfoWithContext(
"www.example.com",
false,
List.of(new EdgeDomain("example.com"),
new EdgeDomain("about.example.com")
List.of(
new DbDomainQueries.DomainWithNode(new EdgeDomain("example.com"), 1),
new DbDomainQueries.DomainWithNode(new EdgeDomain("example.com"), 0)
),
14,
"https://www.example.com",