[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:
		
							parent
							
								
									03189d60f4
								
							
						
					
					
						commit
						61935c72ef
					
				| @ -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 | ||||||
|  | |||||||
| @ -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 | ||||||
|  | |||||||
| @ -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('_', ' ') | ||||||
|  | |||||||
| @ -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']) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Martin Fischer
						Martin Fischer