on master help sign in
[enh] allow searx query parts anywhere in the query - closes #831
commitaa3c18dda9329fff875328f6ba97483c417b149a authorAdam Tauber <asciimoo@gmail.com> dateSun 25 Oct 2020, 17:40 (6 years ago) parent9b87287
1 file changed+14−23
searx/query.py+14−23
searx/query.py+14−23
@@ -37,6 +37,7 @@ class RawTextQuery:
3737 self.disabled_engines = disabled_engines
3838
3939 self.query_parts = []
40+ self.user_query_parts = []
4041 self.enginerefs = []
4142 self.languages = []
4243 self.timeout_limit = None
@@ -52,19 +53,13 @@ class RawTextQuery:
5253 # split query, including whitespaces
5354 raw_query_parts = re.split(r'(\s+)', self.query)
5455
55− parse_next = True
56−
5756 for query_part in raw_query_parts:
58− if not parse_next:
59− self.query_parts[-1] += query_part
60− continue
61−
62− parse_next = False
57+ searx_query_part = False
6358
6459 # part does only contain spaces, skip
6560 if query_part.isspace()\
6661 or query_part == '':
67− parse_next = True
62+ searx_query_part = True
6863 self.query_parts.append(query_part)
6964 continue
7065
@@ -78,7 +73,7 @@ class RawTextQuery:
7873 else:
7974 # 100 or above, the unit is the millisecond ( <850 = 850 milliseconds timeout )
8075 self.timeout_limit = raw_timeout_limit / 1000.0
81− parse_next = True
76+ searx_query_part = True
8277 except ValueError:
8378 # error not reported to the user
8479 pass
@@ -99,7 +94,7 @@ class RawTextQuery:
9994 or lang == english_name
10095 or lang.replace('-', ' ') == country)\
10196 and lang not in self.languages:
102− parse_next = True
97+ searx_query_part = True
10398 lang_parts = lang_id.split('-')
10499 if len(lang_parts) == 2:
105100 self.languages.append(lang_parts[0] + '-' + lang_parts[1].upper())
@@ -116,12 +111,12 @@ class RawTextQuery:
116111 lang = lang_parts[0].lower() + '-' + lang_parts[1].upper()
117112 if lang not in self.languages:
118113 self.languages.append(lang)
119− parse_next = True
114+ searx_query_part = True
120115
121116 # external bang
122117 if query_part[0:2] == "!!":
123118 self.external_bang = query_part[2:]
124− parse_next = True
119+ searx_query_part = True
125120 continue
126121 # this force a engine or category
127122 if query_part[0] == '!' or query_part[0] == '?':
@@ -129,21 +124,21 @@ class RawTextQuery:
129124
130125 # check if prefix is equal with engine shortcut
131126 if prefix in engine_shortcuts:
132− parse_next = True
127+ searx_query_part = True
133128 engine_name = engine_shortcuts[prefix]
134129 if engine_name in engines:
135130 self.enginerefs.append(EngineRef(engine_name, 'none', True))
136131
137132 # check if prefix is equal with engine name
138133 elif prefix in engines:
139− parse_next = True
134+ searx_query_part = True
140135 self.enginerefs.append(EngineRef(prefix, 'none', True))
141136
142137 # check if prefix is equal with categorie name
143138 elif prefix in categories:
144139 # using all engines for that search, which
145140 # are declared under that categorie name
146− parse_next = True
141+ searx_query_part = True
147142 self.enginerefs.extend(EngineRef(engine.name, prefix)
148143 for engine in categories[prefix]
149144 if (engine.name, prefix) not in self.disabled_engines)
@@ -153,19 +148,15 @@ class RawTextQuery:
153148
154149 # append query part to query_part list
155150 self.query_parts.append(query_part)
151+ if not searx_query_part:
152+ self.user_query_parts.append(query_part)
156153
157154 def changeQuery(self, query):
158− if len(self.query_parts):
159− self.query_parts[-1] = query
160− else:
161− self.query_parts.append(query)
155+ self.user_query_parts = query.strip().split()
162156 return self
163157
164158 def getQuery(self):
165− if len(self.query_parts):
166− return self.query_parts[-1]
167− else:
168− return ''
159+ return ' '.join(self.user_query_parts)
169160
170161 def getFullQuery(self):
171162 # get full querry including whitespaces