diff options
author | Adolfo Fitoria <adolfo.fitoria@gmail.com> | 2012-06-20 12:39:32 -0600 |
---|---|---|
committer | Adolfo Fitoria <adolfo.fitoria@gmail.com> | 2012-06-20 12:39:32 -0600 |
commit | ea4b1eb15de0d382a99ebcfe70e3c11ac83d49e4 (patch) | |
tree | 1682f39fa1196c408dfebbf7ccbe35a93a4f5a27 /askbot/search | |
parent | d26f827463f2d76423dc12288f2c3d6740f2b607 (diff) | |
download | askbot-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__.py | 19 |
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)) |