Browse Source

Merge pull request #1630 from MarcAbonce/bang_fixes

[fix] Small fixes with bangs in queries
Alexandre Flament 5 years ago
parent
commit
ddee4861ce
3 changed files with 12 additions and 4 deletions
  1. 4 0
      searx/autocomplete.py
  2. 2 2
      searx/templates/oscar/results.html
  3. 6 2
      searx/webapp.py

+ 4 - 0
searx/autocomplete.py

@@ -16,6 +16,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
 '''
 
 
+import sys
 from lxml import etree
 from json import loads
 from searx import settings
@@ -26,6 +27,9 @@ from searx.engines import (
 from searx.poolrequests import get as http_get
 from searx.url_utils import urlencode
 
+if sys.version_info[0] == 3:
+    unicode = str
+
 
 def get(*args, **kwargs):
     if 'timeout' not in kwargs:

+ 2 - 2
searx/templates/oscar/results.html

@@ -21,7 +21,7 @@
                 <span class="result_header text-muted form-inline pull-left suggestion_item">{{ _('Try searching for:') }}</span>
                 {% for correction in corrections %}
                     <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-left suggestion_item">
-                        <input type="hidden" name="q" value="{{ correction }}">
+                        <input type="hidden" name="q" value="{{ query_prefix + correction }}">
                         <button type="submit" class="btn btn-default btn-xs">{{ correction }}</button>
                     </form>
                 {% endfor %}
@@ -118,7 +118,7 @@
                 <div class="panel-body">
                     {% for suggestion in suggestions %}
                     <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item">
-                        <input type="hidden" name="q" value="{{ suggestion }}">
+                        <input type="hidden" name="q" value="{{ query_prefix + suggestion }}">
                         <button type="submit" class="btn btn-default btn-xs">{{ suggestion }}</button>
                     </form>
                     {% endfor %}

+ 6 - 2
searx/webapp.py

@@ -584,6 +584,7 @@ def index():
         'results.html',
         results=results,
         q=request.form['q'],
+        query_prefix=u''.join((request.form['q']).rsplit(search_query.query.decode('utf-8'), 1)),
         selected_categories=search_query.categories,
         pageno=search_query.pageno,
         time_range=search_query.time_range,
@@ -636,8 +637,11 @@ def autocompleter():
     # parse searx specific autocompleter results like !bang
     raw_results = searx_bang(raw_text_query)
 
-    # normal autocompletion results only appear if max 3 inner results returned
-    if len(raw_results) <= 3 and completer:
+    # normal autocompletion results only appear if no inner results returned
+    # and there is a query part besides the engine and language bangs
+    if len(raw_results) == 0 and completer and (len(raw_text_query.query_parts) > 1 or
+                                                (len(raw_text_query.languages) == 0 and
+                                                 not raw_text_query.specific)):
         # get language from cookie
         language = request.preferences.get_value('language')
         if not language or language == 'all':