geopython / pycsw

pycsw is an OGC CSW server implementation written in Python. pycsw fully implements the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web]. Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation. pycsw allows for the publishing and discovery of geospatial metadata via numerous APIs (CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing repositories of geospatial metadata can also be exposed, providing a standards-based metadata and catalogue component of spatial data infrastructures. pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X). Please read the docs at https://pycsw.org/docs for more information.
https://pycsw.org
MIT License
198 stars 153 forks source link

filter by keyword(s) in ogcapi-records #884

Closed pvgenuchten closed 5 months ago

pvgenuchten commented 11 months ago

Description

I tried to filter by multiple keywords using collections/foo/items?keywords=global,soil

I can understand, i have to use cql instead for this type of queries

On CQL I was looking for the correct cql-language, is that advertised somewhere (yes)? In code I found https://github.com/geopython/pycsw/blob/3243c43c613d1fc951f3aacd6c00cbbeba119a6a/pycsw/ogc/api/records.py#L541-L542C13

Then when trying to query by keywords, i have a bit unexpected results. This record https://demo.pycsw.org/cite/collections/metadata:main/items/urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f has a keyword Tourism--Greece, I guess in the original record that where 2 keywords?

due to this reason https://demo.pycsw.org/cite/collections/metadata:main/items?filter=keywords%20=%20%22Tourism%22&filter-lang=cql2-text does not give any results

This however gives result, which assumes some -- separator and both keywords https://demo.pycsw.org/cite/collections/metadata:main/items?filter=keywords%20=%20%22Tourism--Greece%22&filter-lang=cql2-text Expected would be to have a match on individual keywords

Interestingly https://demo.pycsw.org/cite/collections/metadata:main/items?keywords=Tourism does provide the expected result

pvgenuchten commented 5 months ago

Actually the string Tourism--Greece originates from the subject at tests/functionaltests/suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml

filter by keywords works fine for other records