Skip to content

Commit 77a69e1

Browse files
authored
OARec: update ES q= support per Req 27 (#2059)
1 parent e84a56c commit 77a69e1

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

pygeoapi/provider/elasticsearch_.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,11 @@ def query(self, offset=0, limit=10, resulttype='results',
333333

334334
if q is not None:
335335
LOGGER.debug('Adding free-text search')
336-
query['query']['bool']['must'] = {'query_string': {'query': q}}
336+
# split inclusive on ',' (OR)
337+
q_tokens = [f'"{t}"' for t in q.split(',')]
338+
# enclose each token as a search phrase
339+
q2 = ' OR '.join(q_tokens)
340+
query['query']['bool']['must'] = {'query_string': {'query': q2}}
337341

338342
query['_source'] = {
339343
'excludes': [

tests/test_elasticsearch__provider.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,22 @@ def test_query(config):
251251
assert len(results['features'][0]['properties']) == 1
252252

253253

254+
def test_query_q(config):
255+
p = ElasticsearchProvider(config)
256+
257+
result = p.query(q='vatican')
258+
assert len(result['features']) == 1
259+
260+
result = p.query(q='vatican,lazio')
261+
assert len(result['features']) == 2
262+
263+
result = p.query(q='vatican lazio')
264+
assert len(result['features']) == 0
265+
266+
result = p.query(q='holy see')
267+
assert len(result['features']) == 1
268+
269+
254270
def test_query_ordered_properties(config_ordered_properties):
255271
p = ElasticsearchProvider(config_ordered_properties)
256272

0 commit comments

Comments
 (0)