on master help sign in
Merge pull request #1630 from MarcAbonce/bang_fixes
ddee486Alexandre Flament
searx/autocomplete.py+4
@@ -16,6 +16,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
16'''
16'''
17
17
18
18
19+import sys
19from lxml import etree
20from lxml import etree
20from json import loads
21from json import loads
21from searx import settings
22from searx import settings
@@ -26,6 +27,9 @@ from searx.engines import (
26from searx.poolrequests import get as http_get
27from searx.poolrequests import get as http_get
27from searx.url_utils import urlencode
28from searx.url_utils import urlencode
28
29
30+if sys.version_info[0] == 3:
31+ unicode = str
32+
29
33
30def get(*args, **kwargs):
34def get(*args, **kwargs):
31 if 'timeout' not in kwargs:
35 if 'timeout' not in kwargs:
searx/templates/oscar/results.html+2−2
@@ -21,7 +21,7 @@
21 <span class="result_header text-muted form-inline pull-left suggestion_item">{{ _('Try searching for:') }}</span>
21 <span class="result_header text-muted form-inline pull-left suggestion_item">{{ _('Try searching for:') }}</span>
22 {% for correction in corrections %}
22 {% for correction in corrections %}
23 <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-left suggestion_item">
23 <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-left suggestion_item">
24− <input type="hidden" name="q" value="{{ correction }}">
24+ <input type="hidden" name="q" value="{{ query_prefix + correction }}">
25 <button type="submit" class="btn btn-default btn-xs">{{ correction }}</button>
25 <button type="submit" class="btn btn-default btn-xs">{{ correction }}</button>
26 </form>
26 </form>
27 {% endfor %}
27 {% endfor %}
@@ -118,7 +118,7 @@
118 <div class="panel-body">
118 <div class="panel-body">
119 {% for suggestion in suggestions %}
119 {% for suggestion in suggestions %}
120 <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item">
120 <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item">
121− <input type="hidden" name="q" value="{{ suggestion }}">
121+ <input type="hidden" name="q" value="{{ query_prefix + suggestion }}">
122 <button type="submit" class="btn btn-default btn-xs">{{ suggestion }}</button>
122 <button type="submit" class="btn btn-default btn-xs">{{ suggestion }}</button>
123 </form>
123 </form>
124 {% endfor %}
124 {% endfor %}
searx/webapp.py+6−2
@@ -584,6 +584,7 @@ def index():
584 'results.html',
584 'results.html',
585 results=results,
585 results=results,
586 q=request.form['q'],
586 q=request.form['q'],
587+ query_prefix=u''.join((request.form['q']).rsplit(search_query.query.decode('utf-8'), 1)),
587 selected_categories=search_query.categories,
588 selected_categories=search_query.categories,
588 pageno=search_query.pageno,
589 pageno=search_query.pageno,
589 time_range=search_query.time_range,
590 time_range=search_query.time_range,
@@ -636,8 +637,11 @@ def autocompleter():
636 # parse searx specific autocompleter results like !bang
637 # parse searx specific autocompleter results like !bang
637 raw_results = searx_bang(raw_text_query)
638 raw_results = searx_bang(raw_text_query)
638
639
639− # normal autocompletion results only appear if max 3 inner results returned
640+ # normal autocompletion results only appear if no inner results returned
641+ # and there is a query part besides the engine and language bangs
640− if len(raw_results) <= 3 and completer:
642+ if len(raw_results) == 0 and completer and (len(raw_text_query.query_parts) > 1 or
643+ (len(raw_text_query.languages) == 0 and
644+ not raw_text_query.specific)):
641 # get language from cookie
645 # get language from cookie
642 language = request.preferences.get_value('language')
646 language = request.preferences.get_value('language')
643 if not language or language == 'all':
647 if not language or language == 'all':