Skip to content

Commit

Permalink
query_suggestions: unsupported keywords
Browse files Browse the repository at this point in the history
* Adds a message for when unsupported keywords are used.

* Addresses inspirehep/inspire-next#817 .

Signed-off-by: Panos Paparrigopoulos <panos.paparrigopoulos@cern.ch>
  • Loading branch information
Panos512 committed Feb 3, 2016
1 parent c3181f6 commit 2bba706
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
14 changes: 10 additions & 4 deletions invenio_search/query_suggestions.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,27 @@

from blinker import Namespace

from flask import flash
from flask import Markup, flash

_signals = Namespace()

unsupported_keyword = _signals.signal('unsupported_keyword')
malformed_query = _signals.signal('malformed_query')
extra_keywords = _signals.signal('extra_keywords')


@unsupported_keyword.connect
def unsupported_keyword_message(sender, keyword, *args, **kwargs):
flash(Markup(str('<b>' + keyword +
"</b> keyword is currently unsupported.")), "query_suggestion")


@malformed_query.connect
def malformed_query_message(sender):
flash("Malformed Query", "query_suggestion")
pass
flash("Malformed Query. The results may contain unintended results.",
"query_suggestion")


@extra_keywords.connect
def extra_keywords_message(sender):
flash("Extra-keyword Query", "query_suggestion")
pass
8 changes: 7 additions & 1 deletion invenio_search/walkers/elasticsearch.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@
)
from invenio_query_parser.visitor import make_visitor

from invenio_search.query_suggestions import extra_keywords
from invenio_search.query_suggestions import extra_keywords, unsupported_keyword


class ElasticSearchDSL(object):

Expand Down Expand Up @@ -80,6 +81,11 @@ def visit(self, node, op):

@visitor(KeywordOp)
def visit(self, node, left, right):
if str(left) == 'refersto' or str(left) == 'citedby':
unsupported_keyword.send(keyword=left)
return {
"match_all": {}
}
if callable(right):
keyword = self.map_keyword_to_fields(
left, getattr(right, '__search_mode__', 'a')
Expand Down

0 comments on commit 2bba706

Please # to comment.