Commit 89b4bf00f6e37c5823ae7b3e693ea8b3559e4281
1 parent
1749e8ce
Exists in
master
and in
39 other branches
Using haystack to index hits
Hits will be used in relevance score (should be done in #20). Closes #21.
Showing
2 changed files
with
16 additions
and
0 deletions
Show diff stats
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 |