diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java index 84520908..abe00fb3 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java @@ -198,10 +198,16 @@ public enum CQLFields implements CQLFieldsInterface { null, null, null), + // Word match instead of phrase, so word order and gaps do not matter, e.g. "imos moorings" matches + // "... Moorings Sub-Facility, Integrated Marine Observing System (IMOS)". 1-2 words must all match, 3+ words need 75%. organisation_vocabs( StacBasicField.OrganisationVocabs.searchField, StacBasicField.OrganisationVocabs.displayField, - null, + (literal) -> MatchQuery.of(m -> m + .field(StacBasicField.OrganisationVocabs.searchField) + .query(literal) + .operator(Operator.Or) + .minimumShouldMatch("2<75%"))._toQuery(), null, null), id(