From 12b76f4daae8356b332821fd9dbd96ba8a6e3612 Mon Sep 17 00:00:00 2001 From: Stig Norland Date: Fri, 17 Nov 2023 15:34:26 +0100 Subject: [PATCH] added facets --- .../constants/ApplicationConstants.java | 16 ++++----- .../unit/nva/search2/UserSettingsClient.java | 5 ++- .../unit/nva/search2/model/ParameterKey.java | 33 +++++++++---------- .../no/unit/nva/search/OpensearchTest.java | 2 +- 4 files changed, 27 insertions(+), 29 deletions(-) diff --git a/search-commons/src/main/java/no/unit/nva/search/constants/ApplicationConstants.java b/search-commons/src/main/java/no/unit/nva/search/constants/ApplicationConstants.java index be7768e63..d6729c70d 100644 --- a/search-commons/src/main/java/no/unit/nva/search/constants/ApplicationConstants.java +++ b/search-commons/src/main/java/no/unit/nva/search/constants/ApplicationConstants.java @@ -135,7 +135,7 @@ private static NestedAggregationBuilder generateReferenceAggregation() { private static TermsAggregationBuilder generatePublicationInstanceTypeAggregation() { return generateSimpleAggregation( - TYPE, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_INSTANCE, TYPE)); + TYPE, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_INSTANCE, TYPE, KEYWORD)); } private static NestedAggregationBuilder generateNestedPublicationInstanceAggregation() { @@ -150,22 +150,22 @@ private static NestedAggregationBuilder generateNestedPublicationContextAggregat private static TermsAggregationBuilder generatePublicationContextPublisherIdAggregation() { return generateSimpleAggregation( - PUBLISHER, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_CONTEXT, PUBLISHER, IDENTIFIER)); + PUBLISHER, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_CONTEXT, PUBLISHER, IDENTIFIER, KEYWORD)); } private static TermsAggregationBuilder generatePublicationContextPublisherNameAggregation() { return generateSimpleAggregation( - NAME, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_CONTEXT, PUBLISHER, NAME)); + NAME, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_CONTEXT, PUBLISHER, NAME, KEYWORD)); } private static TermsAggregationBuilder generatePublicationContextJournalIdAggregation() { return generateSimpleAggregation( - ID, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_CONTEXT, IDENTIFIER)); + ID, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_CONTEXT, IDENTIFIER, KEYWORD)); } private static TermsAggregationBuilder generatePublicationContextJournalNameAggregation() { return generateSimpleAggregation( - NAME, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_CONTEXT, NAME)); + NAME, jsonPath(ENTITY_DESCRIPTION, REFERENCE, PUBLICATION_CONTEXT, NAME, KEYWORD)); } private static NestedAggregationBuilder generateEntityDescriptionAggregation() { @@ -183,7 +183,7 @@ private static NestedAggregationBuilder generateFundingSourceAggregation() { return new NestedAggregationBuilder(FUNDINGS, FUNDINGS) .subAggregation( - generateSimpleAggregation(IDENTIFIER, jsonPath(FUNDINGS, SOURCE, IDENTIFIER)) + generateSimpleAggregation(IDENTIFIER, jsonPath(FUNDINGS, SOURCE, IDENTIFIER, KEYWORD)) .subAggregation( generateLabelsAggregation(jsonPath(FUNDINGS, SOURCE))) ); @@ -209,12 +209,12 @@ private static NestedAggregationBuilder generateNestedIdentityAggregation() { } private static TermsAggregationBuilder generateIdAggregation() { - return generateSimpleAggregation(ID, jsonPath(ENTITY_DESCRIPTION, CONTRIBUTORS, IDENTITY, ID)); + return generateSimpleAggregation(ID, jsonPath(ENTITY_DESCRIPTION, CONTRIBUTORS, IDENTITY, ID, KEYWORD)); } private static TermsAggregationBuilder generateIdAggregation(String object) { return new TermsAggregationBuilder(ID) - .field(jsonPath(object, ID)) + .field(jsonPath(object, ID, KEYWORD)) .size(DEFAULT_AGGREGATION_SIZE) .subAggregation(generateLabelsAggregation(object)); } diff --git a/search-commons/src/main/java/no/unit/nva/search2/UserSettingsClient.java b/search-commons/src/main/java/no/unit/nva/search2/UserSettingsClient.java index fd8154a8a..070b02196 100644 --- a/search-commons/src/main/java/no/unit/nva/search2/UserSettingsClient.java +++ b/search-commons/src/main/java/no/unit/nva/search2/UserSettingsClient.java @@ -24,12 +24,12 @@ import org.slf4j.LoggerFactory; public class UserSettingsClient implements OpenSearchClient { + private static final Logger logger = LoggerFactory.getLogger(UserSettingsClient.class); private final CachedJwtProvider jwtProvider; private final HttpClient httpClient; private final HttpResponse.BodyHandler bodyHandler; - public UserSettingsClient(CachedJwtProvider cachedJwtProvider, HttpClient client) { super(); this.jwtProvider = cachedJwtProvider; @@ -47,7 +47,7 @@ public UserSettings doSearch(ResourceAwsQuery query) { .map(this::handleResponse) .findFirst() .orElse(new UserSettings(Collections.emptyList())); -} + } private Stream createQueryBuilderStream(ResourceAwsQuery query) { return query.getOptional(CONTRIBUTOR_ID).stream(); @@ -87,5 +87,4 @@ private UserSettings handleResponse(HttpResponse response) { ? settings.get() : new UserSettings(Collections.emptyList()); } - } diff --git a/search-commons/src/main/java/no/unit/nva/search2/model/ParameterKey.java b/search-commons/src/main/java/no/unit/nva/search2/model/ParameterKey.java index b91d164a9..a4d25b29d 100644 --- a/search-commons/src/main/java/no/unit/nva/search2/model/ParameterKey.java +++ b/search-commons/src/main/java/no/unit/nva/search2/model/ParameterKey.java @@ -19,25 +19,25 @@ import org.jetbrains.annotations.NotNull; public interface ParameterKey { - + String fieldName(); - + Float fieldBoost(); - + ParamKind fieldType(); - + String fieldPattern(); - + String valuePattern(); - + ValueEncoding valueEncoding(); - + Collection searchFields(); - + FieldOperator searchOperator(); - + String errorMessage(); - + static Predicate equalTo(String name) { return key -> name.matches(key.fieldPattern()); } @@ -80,32 +80,31 @@ static int compareAscending(Enum key1, Enum key2) { return key1.ordinal() - key2.ordinal(); } - static String escapeSearchString(String value) { return value.replaceAll(PATTERN_IS_SPECIAL_CHARACTERS, PATTERN_IS_ADD_SLASH); } - + enum ValueEncoding { NONE, DECODE } - + enum ParamKind { BOOLEAN, DATE, NUMBER, KEYWORD, TEXT, SORT_KEY, CUSTOM } - + enum FieldOperator { MUST(""), MUST_NOT("NOT"), SHOULD("SHOULD"), GREATER_THAN_OR_EQUAL_TO("SINCE"), LESS_THAN("BEFORE"); - + private final String keyPattern; - + FieldOperator(String pattern) { this.keyPattern = PATTERN_IS_IGNORE_CASE + PATTERN_IS_NONE_OR_ONE + pattern; } - + public String pattern() { return keyPattern; } diff --git a/search-commons/src/test/java/no/unit/nva/search/OpensearchTest.java b/search-commons/src/test/java/no/unit/nva/search/OpensearchTest.java index ced65c620..83bea0e2e 100644 --- a/search-commons/src/test/java/no/unit/nva/search/OpensearchTest.java +++ b/search-commons/src/test/java/no/unit/nva/search/OpensearchTest.java @@ -444,7 +444,7 @@ void shouldQueryingFundingSuccessfully() throws InterruptedException, ApiGateway "sample_publication_with_several_of_the_same_affiliation.json"); var query = queryWithTermAndAggregation( - "fundings.source.identifier:\"NFR\"", + "fundings.source.identifier.keyword:\"NFR\"", ApplicationConstants.RESOURCES_AGGREGATIONS); var response = searchClient.searchWithSearchDocumentQuery(query, indexName);