]> git.openstreetmap.org Git - osqa.git/blob - forum_modules/pgfulltext/handlers.py
6e2165b247278613753a05367441e80c846931af
[osqa.git] / forum_modules / pgfulltext / handlers.py
1 from django.db.models import Q
2 from forum.models.question import Question, QuestionManager
3 from forum.modules.decorators import decorate
4
5 @decorate(QuestionManager.search, needs_origin=False)
6 def question_search(self, keywords):
7     return self.extra(
8                     tables = ['forum_rootnode_doc'],
9                     select={
10                         'ranking': """
11                                 rank_exact_matches(ts_rank_cd('{0.1, 0.2, 0.8, 1.0}'::float4[], "forum_rootnode_doc"."document", plainto_tsquery('english', %s), 32))
12                                 """,
13                     },
14                     where=["""
15                            "forum_rootnode_doc"."node_id" = "forum_node"."id" AND ("forum_rootnode_doc"."document" @@ plainto_tsquery('english', %s) OR
16                            "forum_node"."title" ILIKE '""" + keywords + """%%')
17                            """],
18                     params=[keywords],
19                     select_params=[keywords],
20                     order_by=['-ranking']
21                 )
22