diff --git a/searx/query.py b/searx/query.py index cd2b3f423..e491284f0 100644 --- a/searx/query.py +++ b/searx/query.py @@ -38,6 +38,7 @@ class Query(object): self.query_parts = [] self.engines = [] self.languages = [] + self.specific = False # parse query, if tags are set, which # change the serch engine or search-language @@ -83,7 +84,7 @@ class Query(object): break # this force a engine or category - if query_part[0] == '!': + if query_part[0] == '!' or query_part[0] == '?': prefix = query_part[1:].replace('_', ' ') # check if prefix is equal with engine shortcut @@ -110,6 +111,9 @@ class Query(object): for engine in categories[prefix] if engine not in self.blocked_engines) + if query_part[0] == '!': + self.specific = True + # append query part to query_part list self.query_parts.append(query_part) diff --git a/searx/search.py b/searx/search.py index f58b6167c..427da3bab 100644 --- a/searx/search.py +++ b/searx/search.py @@ -373,7 +373,7 @@ class Search(object): # if engines are calculated from query, # set categories by using that informations - if self.engines: + if self.engines and query_obj.specific: self.categories = list(set(engine['category'] for engine in self.engines))