on master help sign in
[mod] search return value
d1b12f9Adam Tauber
searx/search.py+12−15
@@ -329,8 +329,8 @@ class Search(object):
329 self.blocked_engines = get_blocked_engines(engines, request.cookies)
329 self.blocked_engines = get_blocked_engines(engines, request.cookies)
330
330
331 self.results = []
331 self.results = []
332− self.suggestions = []
332+ self.suggestions = set()
333− self.answers = []
333+ self.answers = set()
334 self.infoboxes = []
334 self.infoboxes = []
335 self.request_data = {}
335 self.request_data = {}
336
336
@@ -429,9 +429,6 @@ class Search(object):
429 requests = []
429 requests = []
430 results_queue = Queue()
430 results_queue = Queue()
431 results = {}
431 results = {}
432− suggestions = set()
433− answers = set()
434− infoboxes = []
435
432
436 # increase number of searches
433 # increase number of searches
437 number_of_searches += 1
434 number_of_searches += 1
@@ -511,7 +508,7 @@ class Search(object):
511 selected_engine['name']))
508 selected_engine['name']))
512
509
513 if not requests:
510 if not requests:
514− return results, suggestions, answers, infoboxes
511+ return self
515 # send all search-request
512 # send all search-request
516 threaded_requests(requests)
513 threaded_requests(requests)
517
514
@@ -519,19 +516,19 @@ class Search(object):
519 engine_name, engine_results = results_queue.get_nowait()
516 engine_name, engine_results = results_queue.get_nowait()
520
517
521 # TODO type checks
518 # TODO type checks
522− [suggestions.add(x['suggestion'])
519+ [self.suggestions.add(x['suggestion'])
523 for x in list(engine_results)
520 for x in list(engine_results)
524 if 'suggestion' in x
521 if 'suggestion' in x
525 and engine_results.remove(x) is None]
522 and engine_results.remove(x) is None]
526
523
527− [answers.add(x['answer'])
524+ [self.answers.add(x['answer'])
528 for x in list(engine_results)
525 for x in list(engine_results)
529 if 'answer' in x
526 if 'answer' in x
530 and engine_results.remove(x) is None]
527 and engine_results.remove(x) is None]
531
528
532− infoboxes.extend(x for x in list(engine_results)
529+ self.infoboxes.extend(x for x in list(engine_results)
533− if 'infobox' in x
530+ if 'infobox' in x
534− and engine_results.remove(x) is None)
531+ and engine_results.remove(x) is None)
535
532
536 results[engine_name] = engine_results
533 results[engine_name] = engine_results
537
534
@@ -541,16 +538,16 @@ class Search(object):
541 engines[engine_name].stats['result_count'] += len(engine_results)
538 engines[engine_name].stats['result_count'] += len(engine_results)
542
539
543 # score results and remove duplications
540 # score results and remove duplications
544− results = score_results(results)
541+ self.results = score_results(results)
545
542
546 # merge infoboxes according to their ids
543 # merge infoboxes according to their ids
547− infoboxes = merge_infoboxes(infoboxes)
544+ self.infoboxes = merge_infoboxes(self.infoboxes)
548
545
549 # update engine stats, using calculated score
546 # update engine stats, using calculated score
550− for result in results:
547+ for result in self.results:
551 for res_engine in result['engines']:
548 for res_engine in result['engines']:
552 engines[result['engine']]\
549 engines[result['engine']]\
553 .stats['score_count'] += result['score']
550 .stats['score_count'] += result['score']
554
551
555 # return results, suggestions, answers and infoboxes
552 # return results, suggestions, answers and infoboxes
556− return results, suggestions, answers, infoboxes
553+ return self
searx/webapp.py+1−2
@@ -323,8 +323,7 @@ def index():
323 'index.html',
323 'index.html',
324 )
324 )
325
325
326− search.results, search.suggestions,\
326+ search.search(request)
327− search.answers, search.infoboxes = search.search(request)
328
327
329 for result in search.results:
328 for result in search.results:
330
329