From 52ad109464a5b43a1bde9b31f14c39eee2a7faac Mon Sep 17 00:00:00 2001 From: Paul van Genuchten Date: Thu, 9 Jan 2025 13:14:38 +0100 Subject: [PATCH] split keywords by , in facet, then recalculate --- pycsw/ogc/api/records.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pycsw/ogc/api/records.py b/pycsw/ogc/api/records.py index a3d6a21e4..54b2412e9 100644 --- a/pycsw/ogc/api/records.py +++ b/pycsw/ogc/api/records.py @@ -1098,6 +1098,22 @@ def get_facets(self, filters=None) -> dict: 'value': fq[0], 'count': fq[1] }) + + if facet in ['keywords']: + splitkws = {} + for k in facets_results[facet]['buckets']: + if 'value' in k.keys() and k['value'] not in [None,''] and int(k['count']) > 0: + if ',' in k['value']: # split kws by , + for k2 in k['value'].split(','): + splitkws[k2.lower()] = int(k['count']) + int(splitkws.get(k2.lower(),0)) + else: + splitkws[k['value'].lower()] = int(k['count']) + int(splitkws.get(k['value'].lower(),0)) + facets_results[facet]['buckets'] = [] # reset facet, populate it again + for k,v in splitkws.items(): + facets_results[facet]['buckets'].append({ + 'value': k, + 'count': v + }) return facets_results