[fix] remove broken ? search operator

The ? search operator has been broken for some time and
currently only raises the question why it's still there.

## Context ##

The query "Paris !images" searches for "Paris" in the "images" category.

Once upon a time Searx supported "Paris ?images" to search for "Paris"
in the currently enabled categories and the "images" category.

The feature makes sense ... the ? syntax does not.
We will hopefully introduce a +!images syntax in the future.

Fixes #702.
This commit is contained in:
Martin Fischer 2022-01-06 13:45:25 +01:00
parent 03189d60f4
commit 61935c72ef
4 changed files with 5 additions and 16 deletions

View file

@ -302,7 +302,7 @@ engine is shown. Most of the options have a default value or even are optional.
search engine. search engine.
``shortcut`` : ``shortcut`` :
Code used to execute bang requests (in this case using ``!bi`` or ``?bi``) Code used to execute bang requests (in this case using ``!bi``)
``base_url`` : optional ``base_url`` : optional
Part of the URL that should be stable across every request. Can be useful to Part of the URL that should be stable across every request. Can be useful to

View file

@ -14,9 +14,6 @@ Prefix ``!``
Prefix: ``:`` Prefix: ``:``
to set language to set language
Prefix: ``?``
to add engines and categories to the currently selected categories
Abbrevations of the engines and languages are also accepted. Engine/category Abbrevations of the engines and languages are also accepted. Engine/category
modifiers are chainable and inclusive (e.g. with :search:`!it !ddg !wp qwer modifiers are chainable and inclusive (e.g. with :search:`!it !ddg !wp qwer
<?q=%21it%20%21ddg%20%21wp%20qwer>` search in IT category **and** duckduckgo <?q=%21it%20%21ddg%20%21wp%20qwer>` search in IT category **and** duckduckgo

View file

@ -177,7 +177,7 @@ class ExternalBangParser(QueryPartParser):
class BangParser(QueryPartParser): class BangParser(QueryPartParser):
@staticmethod @staticmethod
def check(raw_value): def check(raw_value):
return raw_value[0] == '!' or raw_value[0] == '?' return raw_value[0] == '!'
def __call__(self, raw_value): def __call__(self, raw_value):
value = raw_value[1:].replace('-', ' ').replace('_', ' ') value = raw_value[1:].replace('-', ' ').replace('_', ' ')

View file

@ -230,13 +230,12 @@ class TestExternalBangParser(SearxTestCase):
class TestBang(SearxTestCase): class TestBang(SearxTestCase):
SPECIFIC_BANGS = ['!dummy_engine', '!du', '!general'] SPECIFIC_BANGS = ['!dummy_engine', '!du', '!general']
NOT_SPECIFIC_BANGS = ['?dummy_engine', '?du', '?general']
THE_QUERY = 'the query' THE_QUERY = 'the query'
def test_bang(self): def test_bang(self):
load_engines(TEST_ENGINES) load_engines(TEST_ENGINES)
for bang in TestBang.SPECIFIC_BANGS + TestBang.NOT_SPECIFIC_BANGS: for bang in TestBang.SPECIFIC_BANGS:
with self.subTest(msg="Check bang", bang=bang): with self.subTest(msg="Check bang", bang=bang):
query_text = TestBang.THE_QUERY + ' ' + bang query_text = TestBang.THE_QUERY + ' ' + bang
query = RawTextQuery(query_text, []) query = RawTextQuery(query_text, [])
@ -252,13 +251,6 @@ class TestBang(SearxTestCase):
query = RawTextQuery(query_text, []) query = RawTextQuery(query_text, [])
self.assertTrue(query.specific) self.assertTrue(query.specific)
def test_not_specific(self):
for bang in TestBang.NOT_SPECIFIC_BANGS:
with self.subTest(msg="Check bang is not specific", bang=bang):
query_text = TestBang.THE_QUERY + ' ' + bang
query = RawTextQuery(query_text, [])
self.assertFalse(query.specific)
def test_bang_not_found(self): def test_bang_not_found(self):
load_engines(TEST_ENGINES) load_engines(TEST_ENGINES)
query = RawTextQuery('the query !bang_not_found', []) query = RawTextQuery('the query !bang_not_found', [])
@ -278,5 +270,5 @@ class TestBang(SearxTestCase):
query = RawTextQuery('the query !', []) query = RawTextQuery('the query !', [])
self.assertEqual(query.autocomplete_list, ['!images', '!wikipedia', '!osm']) self.assertEqual(query.autocomplete_list, ['!images', '!wikipedia', '!osm'])
query = RawTextQuery('the query ?', ['osm']) query = RawTextQuery('the query !', ['osm'])
self.assertEqual(query.autocomplete_list, ['?images', '?wikipedia']) self.assertEqual(query.autocomplete_list, ['!images', '!wikipedia'])