From d1e88df71e0af2fd43507667a60324cedb68d602 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Tue, 5 Dec 2023 13:26:05 +0100 Subject: [PATCH] (search) Cleaning up the code a bit --- .../search/svc/SimilarDomainsService.java | 144 +++++++++--------- .../search/site-info/site-info-screenshot.hdb | 0 .../search/site-info/site-info-summary.hdb | 110 +++++++++++++ .../templates/search/site-info/site-info.hdb | 112 +------------- 4 files changed, 180 insertions(+), 186 deletions(-) delete mode 100644 code/services-application/search-service/src/main/resources/templates/search/site-info/site-info-screenshot.hdb create mode 100644 code/services-application/search-service/src/main/resources/templates/search/site-info/site-info-summary.hdb diff --git a/code/services-application/search-service/src/main/java/nu/marginalia/search/svc/SimilarDomainsService.java b/code/services-application/search-service/src/main/java/nu/marginalia/search/svc/SimilarDomainsService.java index b90e08d3..d32633ee 100644 --- a/code/services-application/search-service/src/main/java/nu/marginalia/search/svc/SimilarDomainsService.java +++ b/code/services-application/search-service/src/main/java/nu/marginalia/search/svc/SimilarDomainsService.java @@ -3,7 +3,6 @@ package nu.marginalia.search.svc; import com.google.inject.Inject; import com.zaxxer.hikari.HikariDataSource; import gnu.trove.set.hash.TIntHashSet; -import nu.marginalia.db.DomainBlacklist; import nu.marginalia.model.EdgeDomain; import nu.marginalia.model.EdgeUrl; import org.slf4j.Logger; @@ -24,77 +23,6 @@ public class SimilarDomainsService { this.dataSource = dataSource; } - enum LinkType { - STOD, - DTOS, - BIDI, - NONE; - - public static LinkType find(boolean linkStod, boolean linkDtos) { - if (linkDtos && linkStod) - return BIDI; - if (linkDtos) - return DTOS; - if (linkStod) - return STOD; - - return NONE; - } - - public String toString() { - return switch (this) { - case DTOS -> "→"; - case STOD -> "←"; - case BIDI -> "⇆"; - case NONE -> "-"; - }; - } - - public String getDescription() { - return switch (this) { - case STOD -> "Backward Link"; - case DTOS -> "Forward Link"; - case BIDI -> "Mutual Link"; - case NONE -> "No Link"; - }; - } - }; - - public record SimilarDomain(EdgeUrl url, - int domainId, - double relatedness, - double rank, - boolean indexed, - boolean active, - boolean screenshot, - LinkType linkType) - { - public String getRankSymbols() { - if (rank > 90) { - return "★★★★★"; - } - if (rank > 70) { - return "★★★★"; - } - if (rank > 50) { - return "★★★"; - } - if (rank > 30) { - return "★★"; - } - if (rank > 10) { - return "★"; - } - return ""; - } - } - - public record SimilarDomainsSet(List domains, String focusDomain) { - public SimilarDomainsSet(List domains) { - this(domains, ""); - } - } - public List getSimilarDomains(int domainId, int count) { // Tell me you've worked in enterprise software without telling me you've worked in enterprise software String q1 = """ @@ -144,9 +72,7 @@ public class SimilarDomainsService { return domains; } - public List getLinkingDomains(int domainId, int count) { - // Tell me you've worked in enterprise software without telling me you've worked in enterprise software String q1 = """ SELECT NEIGHBOR.ID AS ID, @@ -201,7 +127,6 @@ public class SimilarDomainsService { return domains; } - private List executeSimilarDomainsQueries(int domainId, int count, String... queries) { List domains = new ArrayList<>(count); TIntHashSet seen = new TIntHashSet(); @@ -242,4 +167,73 @@ public class SimilarDomainsService { return domains; } + + public record SimilarDomain(EdgeUrl url, + int domainId, + double relatedness, + double rank, + boolean indexed, + boolean active, + boolean screenshot, + LinkType linkType) + { + + public String getRankSymbols() { + if (rank > 90) { + return "★★★★★"; + } + if (rank > 70) { + return "★★★★"; + } + if (rank > 50) { + return "★★★"; + } + if (rank > 30) { + return "★★"; + } + if (rank > 10) { + return "★"; + } + return ""; + } + } + + enum LinkType { + BACKWARD, + FOWARD, + BIDIRECTIONAL, + NONE; + + public static LinkType find(boolean linkStod, + boolean linkDtos) + { + if (linkDtos && linkStod) + return BIDIRECTIONAL; + if (linkDtos) + return FOWARD; + if (linkStod) + return BACKWARD; + + return NONE; + } + + public String toString() { + return switch (this) { + case FOWARD -> "→"; + case BACKWARD -> "←"; + case BIDIRECTIONAL -> "⇆"; + case NONE -> "-"; + }; + } + + public String getDescription() { + return switch (this) { + case BACKWARD -> "Backward Link"; + case FOWARD -> "Forward Link"; + case BIDIRECTIONAL -> "Mutual Link"; + case NONE -> "No Link"; + }; + } + }; + } diff --git a/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info-screenshot.hdb b/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info-screenshot.hdb deleted file mode 100644 index e69de29b..00000000 diff --git a/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info-summary.hdb b/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info-summary.hdb new file mode 100644 index 00000000..345ee6ae --- /dev/null +++ b/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info-summary.hdb @@ -0,0 +1,110 @@ +
+ A visual exploration mode is also available. +
+ + +
+
+

🌎 {{domain}}

+ + + + Screenshot of {{domain}} + + {{#with domainInformation}} + {{> search/site-info/site-info-index}} + {{> search/site-info/site-info-links}} + {{/with}} +
+ + {{#if similar}} +
+

Similar Domains

+ + + + + + + + + {{#each similar}} + + + + + + + + + {{/each}} +
MetaRankDomainSimilarity
+ {{#if indexed}} + {{#if active}} + 👀 + {{/if}} + {{#unless active}} + 🔥 + {{/unless}} + {{/if}} + + {{#if screenshot}}📷{{/if}} + + {{{linkType}}} + + {{{rankSymbols}}} + + {{url.domain}} + {{relatedness}}
+ +
+

Note: Because two domains are considered similar does not always mean they're in + cahoots. Similarity is a measure of how often they appear in the same contexts, + which may be an association like peas and carrots, but some pairings are also defined by their + contrasting opposition, like Sparta and Athens.

+
+ {{/if}} + + {{#if linking}} + + {{/if}} +
\ No newline at end of file diff --git a/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info.hdb b/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info.hdb index 013b5b72..00d5c05d 100644 --- a/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info.hdb +++ b/code/services-application/search-service/src/main/resources/templates/search/site-info/site-info.hdb @@ -48,117 +48,7 @@ {{/if}} {{#if view.info}} -
- A visual exploration mode is also available. -
- - -
-
-

🌎 {{domain}}

- - - - Screenshot of {{domain}} - - {{#with domainInformation}} - {{> search/site-info/site-info-index}} - {{> search/site-info/site-info-links}} - {{/with}} -
- - {{#if similar}} -
-

Similar Domains

- - - - - - - - - {{#each similar}} - - - - - - - - - {{/each}} -
MetaRankDomainSimilarity
- {{#if indexed}} - {{#if active}} - 👀 - {{/if}} - {{#unless active}} - 🔥 - {{/unless}} - {{/if}} - - {{#if screenshot}}📷{{/if}} - - {{{linkType}}} - - {{{rankSymbols}}} - - {{url.domain}} - {{relatedness}}
- -
-

Note: Because two domains are considered similar does not always mean they're in - cahoots. Similarity is a measure of how often they appear in the same contexts, - which may be an association like peas and carrots, but some pairings are also defined by their - contrasting opposition, like Sparta and Athens.

-
- {{/if}} - - {{#if linking}} - - {{/if}} -
+ {{>search/site-info/site-info-summary}} {{/if}} {{>search/parts/search-footer}}