1
0
mirror of https://github.com/searxng/searxng.git synced 2024-11-22 20:17:45 +01:00

Add non exclusif bang

Allow to perform a search while adding an engine (or a category) without adding it "officially" to the request.
'?' is used to add an engine without modifying anything else to the request. For example, you can perform a search in the 'general' category, and if you add '?tw' the result from Twitter will be added to the originals results.
This commit is contained in:
Cqoicebordel 2015-01-03 02:31:23 +01:00
parent 7b531c6fce
commit 96c4d52eef
2 changed files with 6 additions and 2 deletions

View File

@ -38,6 +38,7 @@ class Query(object):
self.query_parts = [] self.query_parts = []
self.engines = [] self.engines = []
self.languages = [] self.languages = []
self.specific = False
# parse query, if tags are set, which # parse query, if tags are set, which
# change the serch engine or search-language # change the serch engine or search-language
@ -83,7 +84,7 @@ class Query(object):
break break
# this force a engine or category # this force a engine or category
if query_part[0] == '!': if query_part[0] == '!' or query_part[0] == '?':
prefix = query_part[1:].replace('_', ' ') prefix = query_part[1:].replace('_', ' ')
# check if prefix is equal with engine shortcut # check if prefix is equal with engine shortcut
@ -110,6 +111,9 @@ class Query(object):
for engine in categories[prefix] for engine in categories[prefix]
if engine not in self.blocked_engines) if engine not in self.blocked_engines)
if query_part[0] == '!':
self.specific = True
# append query part to query_part list # append query part to query_part list
self.query_parts.append(query_part) self.query_parts.append(query_part)

View File

@ -371,7 +371,7 @@ class Search(object):
# if engines are calculated from query, # if engines are calculated from query,
# set categories by using that informations # set categories by using that informations
if self.engines: if self.engines and query_obj.specific:
self.categories = list(set(engine['category'] self.categories = list(set(engine['category']
for engine in self.engines)) for engine in self.engines))