From 484f29e59c2a6111685a446e352287bee9e38b08 Mon Sep 17 00:00:00 2001 From: Sergio Oliveira Date: Thu, 7 Nov 2013 10:29:59 -0200 Subject: [PATCH] Using thread score to help in thread relevance --- src/proxy/search_indexes.py | 8 +++----- src/search/base_indexes.py | 10 +++++----- src/super_archives/search_indexes.py | 9 +++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) 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