summaryrefslogtreecommitdiffstats
path: root/askbot/search
diff options
context:
space:
mode:
authorAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-06-20 12:39:32 -0600
committerAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-06-20 12:39:32 -0600
commitea4b1eb15de0d382a99ebcfe70e3c11ac83d49e4 (patch)
tree1682f39fa1196c408dfebbf7ccbe35a93a4f5a27 /askbot/search
parentd26f827463f2d76423dc12288f2c3d6740f2b607 (diff)
downloadaskbot-ea4b1eb15de0d382a99ebcfe70e3c11ac83d49e4.tar.gz
askbot-ea4b1eb15de0d382a99ebcfe70e3c11ac83d49e4.tar.bz2
askbot-ea4b1eb15de0d382a99ebcfe70e3c11ac83d49e4.zip
haystack search working, bug in sort by relevance
Diffstat (limited to 'askbot/search')
-rw-r--r--askbot/search/haystack/__init__.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/askbot/search/haystack/__init__.py b/askbot/search/haystack/__init__.py
index 0bd4476f..62965645 100644
--- a/askbot/search/haystack/__init__.py
+++ b/askbot/search/haystack/__init__.py
@@ -9,9 +9,10 @@ from askbot.models import Post, Thread, Tag, User
class ThreadIndex(indexes.SearchIndex):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
+ post_text = indexes.CharField(model_attr='posts__text__search')
def index_queryset(self):
- return Thread.objects.all()
+ return Thread.objects.filter(posts__deleted=False)
def prepare(self, obj):
self.prepared_data = super(ThreadIndex, self).prepare(object)
@@ -22,15 +23,23 @@ class PostIndex(indexes.SearchIndex):
text = indexes.CharField(document=True, use_template=True)
post_text = indexes.CharField(model_attr='text')
author = indexes.CharField(model_attr='user')
+ thread_id = indexes.CharField(model_attr='thread')
def index_queryset(self):
- return Post.objects.all()
+ return Post.objects.filter(deleted=False)
site.register(Post, PostIndex)
site.register(Thread, ThreadIndex)
class AskbotSearchQuerySet(SearchQuerySet):
- def get_django_queryset(self, model_klass):
- id_list = [r.pk for r in self.models(model_klass)]
- return model_klass.objects.filter(id__in=id_list)
+ #def get_django_queryset(self, model_klass=Thread):
+ def get_django_queryset(self):
+ id_list = []
+ for r in self:
+ if getattr(r, 'thread_id'):
+ id_list.append(r.thread_id)
+ else:
+ id_list.append(r.pk)
+
+ return Thread.objects.filter(id__in=set(id_list))