Bläddra i källkod

[enh] engine score weight support @ config and engines

asciimoo 11 år sedan
förälder
incheckning
6d956a7d1d
1 ändrade filer med 13 tillägg och 8 borttagningar
  1. 13
    8
      searx/engines/__init__.py

+ 13
- 8
searx/engines/__init__.py Visa fil

51
     print '[E] Error no engines found. Edit your engines.cfg'
51
     print '[E] Error no engines found. Edit your engines.cfg'
52
     exit(2)
52
     exit(2)
53
 
53
 
54
-for section in engines_config.sections():
55
-    engine_data = engines_config.options(section)
56
-    engine = load_module(engines_config.get(section, 'engine')+'.py')
57
-    engine.name = section
54
+for engine_config_name in engines_config.sections():
55
+    engine_data = engines_config.options(engine_config_name)
56
+    engine = load_module(engines_config.get(engine_config_name, 'engine')+'.py')
57
+    engine.name = engine_config_name
58
     for param_name in engine_data:
58
     for param_name in engine_data:
59
         if param_name == 'engine':
59
         if param_name == 'engine':
60
             continue
60
             continue
61
         if param_name == 'categories':
61
         if param_name == 'categories':
62
-            if engines_config.get(section, param_name) == 'none':
62
+            if engines_config.get(engine_config_name, param_name) == 'none':
63
                 engine.categories = []
63
                 engine.categories = []
64
             else:
64
             else:
65
-                engine.categories = map(str.strip, engines_config.get(section, param_name).split(','))
65
+                engine.categories = map(str.strip, engines_config.get(engine_config_name, param_name).split(','))
66
             continue
66
             continue
67
-        setattr(engine, param_name, engines_config.get(section, param_name))
67
+        setattr(engine, param_name, engines_config.get(engine_config_name, param_name))
68
     for engine_attr in dir(engine):
68
     for engine_attr in dir(engine):
69
         if engine_attr.startswith('_'):
69
         if engine_attr.startswith('_'):
70
             continue
70
             continue
161
     for i,res in enumerate(flat_res):
161
     for i,res in enumerate(flat_res):
162
         res['parsed_url'] = urlparse(res['url'])
162
         res['parsed_url'] = urlparse(res['url'])
163
         res['engines'] = [res['engine']]
163
         res['engines'] = [res['engine']]
164
-        score = int((flat_len - i)/engines_len)*settings.weights.get(res['engine'], 1)+1
164
+        weight = 1.0
165
+        if hasattr(engines[res['engine']], 'weight'):
166
+            weight = float(engines[res['engine']].weight)
167
+        elif res['engine'] in settings.weights:
168
+            weight = float(settings.weights[res['engine']])
169
+        score = int((flat_len - i)/engines_len)*weight+1
165
         duplicated = False
170
         duplicated = False
166
         for new_res in results:
171
         for new_res in results:
167
             p1 = res['parsed_url'].path[:-1] if res['parsed_url'].path.endswith('/') else res['parsed_url'].path
172
             p1 = res['parsed_url'].path[:-1] if res['parsed_url'].path.endswith('/') else res['parsed_url'].path