Skip to content

Commit

Permalink
Merge 5f421b2 into e1a8a10
Browse files Browse the repository at this point in the history
  • Loading branch information
MJedr committed Oct 30, 2020
2 parents e1a8a10 + 5f421b2 commit 1a64476
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 3 deletions.
6 changes: 3 additions & 3 deletions inspire_query_parser/visitors/elastic_search_visitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -653,7 +653,7 @@ def visit_empty_query(self, node):
return {'match_all': {}}

def visit_value_op(self, node):
return generate_match_query('_all', node.op.value, with_operator_and=True)
return node.op.accept(self)

def visit_malformed_query(self, node):
return self._generate_malformed_query(node)
Expand Down Expand Up @@ -790,7 +790,7 @@ def handle_author_query(self, node, fieldnames=None):

def visit_value(self, node, fieldnames=None):
if not fieldnames:
fieldnames = '_all'
return generate_match_query('_all', node.value, with_operator_and=True)

if node.contains_wildcard:
return self.handle_value_wildcard(node, fieldnames=fieldnames)
Expand Down Expand Up @@ -941,7 +941,7 @@ def visit_partial_match_value(self, node, fieldnames=None):

return wrap_query_in_nested_if_field_is_nested(query, fieldnames, self.NESTED_FIELDS)

def visit_regex_value(self, node, fieldname):
def visit_regex_value(self, node, fieldname="_all"):
query = {
'regexp': {
fieldname: node.value
Expand Down
64 changes: 64 additions & 0 deletions tests/test_elastic_search_visitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -3552,3 +3552,67 @@ def test_wildcard_queries_are_nested_for_nested_fields():

generated_es_query = _parse_query(query_str)
assert generated_es_query == expected_es_query


def test_regex_search_works_without_keyword():
query_str = '/inve/'
expected_es_query = {
"regexp": {
"_all": "inve"
}
}

generated_es_query = _parse_query(query_str)
assert generated_es_query == expected_es_query


def test_exact_match_works_without_keyword():
query_str = '"invenio"'
expected_es_query = {
"match_phrase": {
"_all": "invenio"
}
}

generated_es_query = _parse_query(query_str)
assert generated_es_query == expected_es_query


def test_partial_match_works_without_keyword():
query_str = "'invenio'"
expected_es_query = {
"query_string": {
"query": "*invenio*",
"default_field": "_all",
"analyze_wildcard": True
}
}

generated_es_query = _parse_query(query_str)
assert generated_es_query == expected_es_query


def test_exact_match_works_without_keyword_in_complex_query():
query_str = '"invenio" something'
expected_es_query = {
"bool": {
"must": [
{
"match_phrase": {
"_all": "invenio"
}
},
{
"match": {
"_all": {
"query": "something",
"operator": "and"
}
}
}
]
}
}

generated_es_query = _parse_query(query_str)
assert generated_es_query == expected_es_query

0 comments on commit 1a64476

Please sign in to comment.