@@ -489,9 +489,10 @@ def index():
489489
490490 # search
491491 search_query = None
492+ raw_text_query = None
492493 result_container = None
493494 try:
494− search_query = get_search_query_from_webapp(request.preferences, request.form)
495+ search_query, raw_text_query = get_search_query_from_webapp(request.preferences, request.form)
495496 # search = Search(search_query) # without plugins
496497 search = SearchWithPlugins(search_query, request.user_plugins, request)
497498 result_container = search.search()
@@ -580,17 +581,25 @@ def index():
580581 )
581582 return Response(response_rss, mimetype='text/xml')
582583
584+ # HTML output format
585+
586+ # suggestions: use RawTextQuery to get the suggestion URLs with the same bang
587+ suggestion_urls = map(lambda suggestion: {
588+ 'url': raw_text_query.changeSearchQuery(suggestion).getFullQuery(),
589+ 'title': suggestion
590+ },
591+ result_container.suggestions)
592+ #
583593 return render(
584594 'results.html',
585595 results=results,
586596 q=request.form['q'],
587− query_prefix=u''.join((request.form['q']).rsplit(search_query.query.decode('utf-8'), 1)),
588597 selected_categories=search_query.categories,
589598 pageno=search_query.pageno,
590599 time_range=search_query.time_range,
591600 number_of_results=format_decimal(number_of_results),
592601 advanced_search=advanced_search,
593− suggestions=result_container.suggestions,
602+ suggestions=suggestion_urls,
594603 answers=result_container.answers,
595604 corrections=result_container.corrections,
596605 infoboxes=result_container.infoboxes,