@@ -774,20 +774,26 @@ def autocompleter():
775 # parse query
775 # parse query
776 raw_text_query = RawTextQuery(request.form.get('q', ''), disabled_engines)
776 raw_text_query = RawTextQuery(request.form.get('q', ''), disabled_engines)
777+ sug_prefix = raw_text_query.getQuery()
778 # normal autocompletion results only appear if no inner results returned
779 # normal autocompletion results only appear if no inner results returned
779 # and there is a query part
780 # and there is a query part
780− if len(raw_text_query.autocomplete_list) == 0 and len(raw_text_query.getQuery()) > 0:
781+ if len(raw_text_query.autocomplete_list) == 0 and len(sug_prefix) > 0:
781 # get language from cookie
783 # get language from cookie
782 language = request.preferences.get_value('language')
784 language = request.preferences.get_value('language')
783 if not language or language == 'all':
785 if not language or language == 'all':
784 language = 'en'
786 language = 'en'
786 language = language.split('-')[0]
788 language = language.split('-')[0]
787 # run autocompletion
790 # run autocompletion
791+ raw_results = search_autocomplete(
788− raw_results = search_autocomplete(request.preferences.get_value('autocomplete'),
792+ request.preferences.get_value('autocomplete'), sug_prefix, language
789− raw_text_query.getQuery(), language)
793+ )
790 for result in raw_results:
794 for result in raw_results:
795+ # attention: this loop will change raw_text_query object and this is
796+ # the reason why the sug_prefix was stored before (see above)
791 results.append(raw_text_query.changeQuery(result).getFullQuery())
797 results.append(raw_text_query.changeQuery(result).getFullQuery())
793 if len(raw_text_query.autocomplete_list) > 0:
799 if len(raw_text_query.autocomplete_list) > 0:
@@ -798,13 +804,16 @@ def autocompleter():
798 for answer in answers:
804 for answer in answers:
799 results.append(str(answer['answer']))
805 results.append(str(answer['answer']))
801− # return autocompleter results
802 if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
807 if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
808+ # the suggestion request comes from the searx search form
803− return Response(json.dumps(results),
809+ suggestions = json.dumps(results)
810+ mimetype = 'application/json'
812+ # the suggestion request comes from browser's URL bar
813+ suggestions = json.dumps([sug_prefix, results])
804− mimetype='application/json')
814+ mimetype = 'application/x-suggestions+json'
806− return Response(json.dumps([raw_text_query.query, results]),
816+ return Response(suggestions, mimetype=mimetype)
807− mimetype='application/x-suggestions+json')
810@app.route('/preferences', methods=['GET', 'POST'])
819@app.route('/preferences', methods=['GET', 'POST'])