forked from zaclys/searxng
		
	Merge pull request #528 from a01200356/autocomplete
[enh] multilingual autocomplete
This commit is contained in:
		
						commit
						26c818193d
					
				
					 2 changed files with 18 additions and 12 deletions
				
			
		|  | @ -110,7 +110,7 @@ def searx_bang(full_query): | |||
|     return list(result_set) | ||||
| 
 | ||||
| 
 | ||||
| def dbpedia(query): | ||||
| def dbpedia(query, lang): | ||||
|     # dbpedia autocompleter, no HTTPS | ||||
|     autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?' | ||||
| 
 | ||||
|  | @ -126,7 +126,7 @@ def dbpedia(query): | |||
|     return results | ||||
| 
 | ||||
| 
 | ||||
| def duckduckgo(query): | ||||
| def duckduckgo(query, lang): | ||||
|     # duckduckgo autocompleter | ||||
|     url = 'https://ac.duckduckgo.com/ac/?{0}&type=list' | ||||
| 
 | ||||
|  | @ -136,11 +136,11 @@ def duckduckgo(query): | |||
|     return [] | ||||
| 
 | ||||
| 
 | ||||
| def google(query): | ||||
| def google(query, lang): | ||||
|     # google autocompleter | ||||
|     autocomplete_url = 'https://suggestqueries.google.com/complete/search?client=toolbar&' | ||||
| 
 | ||||
|     response = get(autocomplete_url + urlencode(dict(q=query))) | ||||
|     response = get(autocomplete_url + urlencode(dict(hl=lang, q=query))) | ||||
| 
 | ||||
|     results = [] | ||||
| 
 | ||||
|  | @ -151,8 +151,8 @@ def google(query): | |||
|     return results | ||||
| 
 | ||||
| 
 | ||||
| def startpage(query): | ||||
|     # wikipedia autocompleter | ||||
| def startpage(query, lang): | ||||
|     # startpage autocompleter | ||||
|     url = 'https://startpage.com/do/suggest?{query}' | ||||
| 
 | ||||
|     resp = get(url.format(query=urlencode({'query': query}))).text.split('\n') | ||||
|  | @ -161,11 +161,11 @@ def startpage(query): | |||
|     return [] | ||||
| 
 | ||||
| 
 | ||||
| def qwant(query): | ||||
| def qwant(query, lang): | ||||
|     # qwant autocompleter (additional parameter : lang=en_en&count=xxx ) | ||||
|     url = 'https://api.qwant.com/api/suggest?{query}' | ||||
| 
 | ||||
|     resp = get(url.format(query=urlencode({'q': query}))) | ||||
|     resp = get(url.format(query=urlencode({'q': query, 'lang': lang}))) | ||||
| 
 | ||||
|     results = [] | ||||
| 
 | ||||
|  | @ -178,9 +178,9 @@ def qwant(query): | |||
|     return results | ||||
| 
 | ||||
| 
 | ||||
| def wikipedia(query): | ||||
| def wikipedia(query, lang): | ||||
|     # wikipedia autocompleter | ||||
|     url = 'https://en.wikipedia.org/w/api.php?action=opensearch&{0}&limit=10&namespace=0&format=json' | ||||
|     url = 'https://' + lang + '.wikipedia.org/w/api.php?action=opensearch&{0}&limit=10&namespace=0&format=json' | ||||
| 
 | ||||
|     resp = loads(get(url.format(urlencode(dict(search=query)))).text) | ||||
|     if len(resp) > 1: | ||||
|  |  | |||
|  | @ -492,7 +492,7 @@ def autocompleter(): | |||
|     if not query.getSearchQuery(): | ||||
|         return '', 400 | ||||
| 
 | ||||
|     # run autocompleter | ||||
|     # get autocompleter | ||||
|     completer = autocomplete_backends.get(request.cookies.get('autocomplete', settings['search']['autocomplete'])) | ||||
| 
 | ||||
|     # parse searx specific autocompleter results like !bang | ||||
|  | @ -500,8 +500,14 @@ def autocompleter(): | |||
| 
 | ||||
|     # normal autocompletion results only appear if max 3 inner results returned | ||||
|     if len(raw_results) <= 3 and completer: | ||||
|         # get language from cookie | ||||
|         language = request.cookies.get('language') | ||||
|         if not language or language == 'all': | ||||
|             language = 'en' | ||||
|         else: | ||||
|             language = language.split('_')[0] | ||||
|         # run autocompletion | ||||
|         raw_results.extend(completer(query.getSearchQuery())) | ||||
|         raw_results.extend(completer(query.getSearchQuery(), language)) | ||||
| 
 | ||||
|     # parse results (write :language and !engine back to result string) | ||||
|     results = [] | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Adam Tauber
						Adam Tauber