Browse Source

[mod] search return value

Adam Tauber 10 years ago
parent
commit
d1b12f9016
2 changed files with 13 additions and 17 deletions
  1. 12
    15
      searx/search.py
  2. 1
    2
      searx/webapp.py

+ 12
- 15
searx/search.py View File

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 = []
333
-        self.answers = []
332
+        self.suggestions = set()
333
+        self.answers = set()
334
         self.infoboxes = []
334
         self.infoboxes = []
335
         self.request_data = {}
335
         self.request_data = {}
336
 
336
 
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
                              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
             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)
533
-                             if 'infobox' in x
534
-                             and engine_results.remove(x) is None)
529
+            self.infoboxes.extend(x for x in list(engine_results)
530
+                                  if 'infobox' in x
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
             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

+ 1
- 2
searx/webapp.py View File

323
             'index.html',
323
             'index.html',
324
         )
324
         )
325
 
325
 
326
-    search.results, search.suggestions,\
327
-        search.answers, search.infoboxes = search.search(request)
326
+    search.search(request)
328
 
327
 
329
     for result in search.results:
328
     for result in search.results:
330
 
329