Commit 89b4bf00f6e37c5823ae7b3e693ea8b3559e4281

Authored by Sergio Oliveira
1 parent 1749e8ce

Using haystack to index hits

Hits will be used in relevance score (should be done in #20).
Closes #21.
src/proxy/search_indexes.py
@@ -21,6 +21,7 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable): @@ -21,6 +21,7 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable):
21 type = indexes.CharField() 21 type = indexes.CharField()
22 icon_name = indexes.CharField(indexed=False) 22 icon_name = indexes.CharField(indexed=False)
23 author_and_username = indexes.CharField(null=True, stored=False) 23 author_and_username = indexes.CharField(null=True, stored=False)
  24 + hits = indexes.IntegerField()
24 25
25 # trac extra fields 26 # trac extra fields
26 collaborators = indexes.CharField( 27 collaborators = indexes.CharField(
@@ -35,6 +36,9 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable): @@ -35,6 +36,9 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable):
35 def get_updated_field(self): 36 def get_updated_field(self):
36 return 'modified' 37 return 'modified'
37 38
  39 + def prepare_hits(self, obj):
  40 + return obj.hits
  41 +
38 def prepare_author(self, obj): 42 def prepare_author(self, obj):
39 author = obj.get_author() 43 author = obj.get_author()
40 if author: 44 if author:
@@ -80,6 +84,7 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable): @@ -80,6 +84,7 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable):
80 icon_name = indexes.CharField(indexed=False) 84 icon_name = indexes.CharField(indexed=False)
81 tag = indexes.CharField(model_attr='status', null=True) 85 tag = indexes.CharField(model_attr='status', null=True)
82 author_and_username = indexes.CharField(null=True, stored=False) 86 author_and_username = indexes.CharField(null=True, stored=False)
  87 + hits = indexes.IntegerField()
83 88
84 # trac extra fields 89 # trac extra fields
85 milestone = indexes.CharField(model_attr='milestone', null=True) 90 milestone = indexes.CharField(model_attr='milestone', null=True)
@@ -99,6 +104,9 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable): @@ -99,6 +104,9 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable):
99 def get_updated_field(self): 104 def get_updated_field(self):
100 return 'modified' 105 return 'modified'
101 106
  107 + def prepare_hits(self, obj):
  108 + return obj.hits
  109 +
102 def prepare_author(self, obj): 110 def prepare_author(self, obj):
103 author = obj.get_author() 111 author = obj.get_author()
104 if author: 112 if author:
@@ -149,6 +157,7 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable): @@ -149,6 +157,7 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable):
149 type = indexes.CharField() 157 type = indexes.CharField()
150 icon_name = indexes.CharField(indexed=False) 158 icon_name = indexes.CharField(indexed=False)
151 author_and_username = indexes.CharField(null=True, stored=False) 159 author_and_username = indexes.CharField(null=True, stored=False)
  160 + hits = indexes.IntegerField()
152 161
153 # trac extra fields 162 # trac extra fields
154 repository_name = indexes.CharField( 163 repository_name = indexes.CharField(
@@ -162,6 +171,9 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable): @@ -162,6 +171,9 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable):
162 def get_updated_field(self): 171 def get_updated_field(self):
163 return 'created' 172 return 'created'
164 173
  174 + def prepare_hits(self, obj):
  175 + return obj.hits
  176 +
165 def prepare_author(self, obj): 177 def prepare_author(self, obj):
166 author = obj.get_author() 178 author = obj.get_author()
167 if author: 179 if author:
src/super_archives/search_indexes.py
@@ -35,6 +35,7 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable): @@ -35,6 +35,7 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable):
35 model_attr='mailinglist__get_absolute_url', 35 model_attr='mailinglist__get_absolute_url',
36 indexed=False, 36 indexed=False,
37 ) 37 )
  38 + hits = indexes.IntegerField()
38 39
39 def get_model(self): 40 def get_model(self):
40 return Thread 41 return Thread
@@ -42,6 +43,9 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable): @@ -42,6 +43,9 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable):
42 def get_updated_field(self): 43 def get_updated_field(self):
43 return 'latest_message__received_time' 44 return 'latest_message__received_time'
44 45
  46 + def prepare_hits(self, obj):
  47 + return obj.hits
  48 +
45 def prepare_author(self, obj): 49 def prepare_author(self, obj):
46 return obj.message_set.first().from_address.get_full_name() 50 return obj.message_set.first().from_address.get_full_name()
47 51