From 289c78a49ca5fe4e3b9748594d709532b023c649 Mon Sep 17 00:00:00 2001 From: "Stefan E. Funk" <funk@sub.uni-goettingen.de> Date: Fri, 11 Jun 2021 15:02:11 +0200 Subject: [PATCH] mc --- .../textgrid/middleware/SetDeliverer.java | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java index 5b8f3b83..d13006ae 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java @@ -39,6 +39,9 @@ public class SetDeliverer { private static final int DH_SIZE = 100000; private static final int TG_SIZE = 1000; + private static final String DH_COLLECTION_FILTER_NAME = "collectionFilter"; + private static final String DH_COLLECTION_FILTER_TERM_NAME = "collectionFilterTerm"; + // private static Map<String, String> setSet = new Hashtable<String, String>(); private Set<String> identifier = new LinkedHashSet<String>(); @@ -124,19 +127,22 @@ public class SetDeliverer { Script collectionID = new Script("doc['administrativeMetadata.dcterms:identifier']"); - AggregationBuilder filterCollections = AggregationBuilders.filter("collectionFilter", + // Do filter all collections (via descriptiveMetadata.dc:format) AND + // get out all the child objects and collections (NO descriptiveMetadata.dc:relation), + // so we get exactly one set per root collection only! + AggregationBuilder collectionFilter = AggregationBuilders.filter(DH_COLLECTION_FILTER_NAME, QueryBuilders.boolQuery() .mustNot(QueryBuilders.existsQuery("descriptiveMetadata.dc:relation")) .must(QueryBuilders.matchPhraseQuery("descriptiveMetadata.dc:format", TextGridMimetypes.DARIAH_COLLECTION))); - AggregationBuilder filterTerm = AggregationBuilders.terms("collectionTerm") - .script(collectionID) - .size(DH_SIZE); - - filterCollections.subAggregation(filterTerm); + AggregationBuilder collectionFilterTerm = + AggregationBuilders.terms(DH_COLLECTION_FILTER_TERM_NAME) + .script(collectionID) + .size(DH_SIZE); - searchSourceBuilder.aggregation(filterCollections); + collectionFilter.subAggregation(collectionFilterTerm); + searchSourceBuilder.aggregation(collectionFilter); } // FIXME Where do we need THIS? @@ -222,14 +228,16 @@ public class SetDeliverer { System.out.println(" ## entry key --> " + entry.getKey()); - if (name.equals("collectionFilter")) { - // Filter trytry = getRecordListItems.getAggregations().get("projectsPublic"); - // Terms trytry2 = trytry.getAggregations().get("projects"); - Filter filterCollection = getRecordListItems.getAggregations().get("collectionFilter"); - Terms collectionTerms = filterCollection.getAggregations().get("collectionTerm"); + if (name.equals(DH_COLLECTION_FILTER_NAME)) { + Filter filterCollection = + getRecordListItems.getAggregations().get(DH_COLLECTION_FILTER_NAME); + Terms collectionTerms = + filterCollection.getAggregations().get(DH_COLLECTION_FILTER_TERM_NAME); for (Bucket b : collectionTerms.getBuckets()) { - System.out.println(" ## ID --> " + b.getKeyAsString()); + System.out.println(" ## key --> " + b.getKey().toString()); + System.out.println(" ## kas --> " + b.getKeyAsString()); + System.out.println(" ## map --> " + b.getAggregations().getAsMap()); SetType newSet = new SetType(); newSet.setSetSpec(b.getKeyAsString()); -- GitLab