From 36b21f93110aa03e48b4a46972eed7d011347007 Mon Sep 17 00:00:00 2001 From: Fabian Steeg Date: Mon, 15 Apr 2024 13:46:45 +0200 Subject: [PATCH] Fix search and entity links for publication & source URIs (RPB-154) --- app/models/AuthorityResource.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/models/AuthorityResource.java b/app/models/AuthorityResource.java index 6cad15d..3d120d8 100644 --- a/app/models/AuthorityResource.java +++ b/app/models/AuthorityResource.java @@ -455,17 +455,18 @@ private String process(String field, String value, String label, int i, int size result = String.format("%s", value, value); } else if (Arrays.asList("dateOfBirth", "dateOfDeath").contains(field)) { result = germanDate(value); - } else if (field.equals("source") && value.startsWith("http")) { - result = String.format("%s %s", value.split(" ")[0], value.split(" ")[0], - value.replace(value.split(" ")[0] + " ", "")); - } else if (value.startsWith("http")) { + } + else if (value.startsWith("http")) { List facets = Arrays.asList(HomeController.AGGREGATIONS); boolean labelBasedFacet = facets.contains(field + ".label"); boolean qBasedSearch = facets.stream().noneMatch(s -> s.startsWith(field)); + boolean plainUriField = field.equals("source") || field.equals("publication"); + String searchField = (field + (plainUriField ? "" : ".id")).replace("source", + "describedBy.source"); String search = controllers.routes.HomeController - .search(qBasedSearch ? field + ".id:\"" + value + "\"" : "", "", "", "", "", "", + .search(qBasedSearch ? searchField + ":\"" + value + "\"" : "", "", "", "", "", "", labelBasedFacet ? field + ".label:\"" + label + "\"" - : field + ".id:\"" + value + "\"", "", 0, 10, "html") + : searchField + ":\"" + value + "\"", "", 0, 10, "html") .toString(); String searchLink = String.format( "%s", // @@ -474,7 +475,7 @@ private String process(String field, String value, String label, int i, int size "" + "", label, value); - boolean linkableEntity = field.equals("relatedPerson") + boolean linkableEntity = field.equals("relatedPerson") || plainUriField || (field.startsWith("place") && value.contains("spatial")); result = searchLink + " " + (linkableEntity ? entityLink : ""); } else if (field.endsWith("AsLiteral")) {