diff --git a/src/proxy/search_indexes.py b/src/proxy/search_indexes.py index 9a2c472..c7c413f 100644 --- a/src/proxy/search_indexes.py +++ b/src/proxy/search_indexes.py @@ -143,11 +143,9 @@ class RevisionIndex(BaseIndex, indexes.Indexable): def get_updated_field(self): return 'created' - def get_boost(self, obj, data): - if obj.hits <= 10: - data['boost'] = 0.8 - else: - data['boost'] = math.log(obj.hits) * 0.8 + def get_boost(self, obj): + boost = super(RevisionIndex, self).get_boost(obj) + return boost * 0.8 def prepare_icon_name(self, obj): return u'align-right' diff --git a/src/search/base_indexes.py b/src/search/base_indexes.py index 0e533d2..f0e39b6 100644 --- a/src/search/base_indexes.py +++ b/src/search/base_indexes.py @@ -22,15 +22,15 @@ class BaseIndex(indexes.SearchIndex): def get_updated_field(self): return 'modified' - def get_boost(self, obj, data): + def get_boost(self, obj): if obj.hits <= 10: - data['boost'] = 1 - else: - data['boost'] = math.log(obj.hits) + return 1 + + return math.log(obj.hits) def prepare(self, obj): data = super(BaseIndex, self).prepare(obj) - self.get_boost(obj, data) + data['boost'] = self.get_boost(obj) return data def prepare_author(self, obj): diff --git a/src/super_archives/search_indexes.py b/src/super_archives/search_indexes.py index 67df634..c208187 100644 --- a/src/super_archives/search_indexes.py +++ b/src/super_archives/search_indexes.py @@ -25,6 +25,7 @@ class ThreadIndex(BaseIndex, indexes.Indexable): model_attr='mailinglist__get_absolute_url', indexed=False, ) + score = indexes.IntegerField(model_attr='score') def get_model(self): return Thread @@ -64,3 +65,11 @@ class ThreadIndex(BaseIndex, indexes.Indexable): return self.get_model().objects.filter( spam=False ).exclude(subject_token='') + + def get_boost(self, obj): + boost = super(ThreadIndex, self).get_boost(obj) + + if obj.score >= 20: + boost = boost * math.log(obj.score, 20) + + return boost -- libgit2 0.21.2