[Django] #28194: Add search rank cd function and normalization for Postgres full text search

38 views
Skip to first unread message

Django

unread,
May 11, 2017, 3:25:04 PM5/11/17
to django-...@googlegroups.com
#28194: Add search rank cd function and normalization for Postgres full text search
---------------------------------------------+------------------------
Reporter: Andrii Soldatenko | Owner: nobody
Type: Uncategorized | Status: new
Component: Uncategorized | Version: 1.11
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
---------------------------------------------+------------------------
It would be great to have cover density ranking for the given document
vector and query function `ts_rank_cd`. It helps to order search results
with different normalization strategies.

Also add `normalization` parameter option that specifies whether and how a
document's length should impact its rank.

>0 (the default) ignores the document length
>1 divides the rank by 1 + the logarithm of the document length
>2 divides the rank by the document length
>4 divides the rank by the mean harmonic distance between extents (this is
implemented only by ts_rank_cd)
>8 divides the rank by the number of unique words in document
>16 divides the rank by 1 + the logarithm of the number of unique words in
document
>32 divides the rank by itself + 1


Now you can do something like this:

{{{
class SearchRankCD(SearchRank):
function = 'ts_rank_cd'

def __init__(self, vector, query, normalization=0, **extra):
super(SearchRank, self).__init__(
vector, query, normalization, **extra)

query = SearchQuery('messenger')

Application.objects.annotate(
rank=SearchRankCD(
F('search_vector_title'), query,
normalization=2) # 2 divides the rank by the document length
).filter(search_vector_title=query).order_by('-rank')
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/28194>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
May 11, 2017, 3:25:30 PM5/11/17
to django-...@googlegroups.com
#28194: Add search rank cd function and normalization for Postgres full text search
-----------------------------------+--------------------------------------

Reporter: Andrii Soldatenko | Owner: nobody
Type: New feature | Status: new
Component: contrib.postgres | Version: 1.11
Severity: Normal | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------------+--------------------------------------
Changes (by Andrii Soldatenko):

* type: Uncategorized => New feature
* component: Uncategorized => contrib.postgres


--
Ticket URL: <https://code.djangoproject.com/ticket/28194#comment:1>

Django

unread,
May 15, 2017, 7:26:38 AM5/15/17
to django-...@googlegroups.com
#28194: Add search rank cd function and normalization for Postgres full text search
-----------------------------------+------------------------------------

Reporter: Andrii Soldatenko | Owner: nobody
Type: New feature | Status: new
Component: contrib.postgres | Version: 1.11
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------------+------------------------------------
Changes (by Tim Graham):

* stage: Unreviewed => Accepted


--
Ticket URL: <https://code.djangoproject.com/ticket/28194#comment:2>

Django

unread,
May 15, 2017, 4:19:31 PM5/15/17
to django-...@googlegroups.com
#28194: Add search rank cd function and normalization for Postgres full text search
-------------------------------------+-------------------------------------
Reporter: Andrii Soldatenko | Owner: Andrii
| Soldatenko
Type: New feature | Status: assigned

Component: contrib.postgres | Version: 1.11
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Andrii Soldatenko):

* status: new => assigned
* owner: nobody => Andrii Soldatenko


--
Ticket URL: <https://code.djangoproject.com/ticket/28194#comment:3>

Django

unread,
Mar 22, 2020, 2:07:02 PM3/22/20
to django-...@googlegroups.com
#28194: Add search rank cd function and normalization for Postgres full text search
-------------------------------------+-------------------------------------
Reporter: Andrii Soldatenko | Owner: Hannes
| Ljungberg

Type: New feature | Status: assigned
Component: contrib.postgres | Version: 1.11
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Simon Charette):

* owner: Andrii Soldatenko => Hannes Ljungberg
* needs_better_patch: 0 => 1
* has_patch: 0 => 1


Comment:

https://github.com/django/django/pull/12597

--
Ticket URL: <https://code.djangoproject.com/ticket/28194#comment:4>

Django

unread,
Mar 23, 2020, 5:45:14 AM3/23/20
to django-...@googlegroups.com
#28194: Add search rank cd function and normalization for Postgres full text search
-------------------------------------+-------------------------------------
Reporter: Andrii Soldatenko | Owner: Hannes
| Ljungberg
Type: New feature | Status: assigned
Component: contrib.postgres | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by felixxm):

* needs_better_patch: 1 => 0
* version: 1.11 => master
* stage: Accepted => Ready for checkin


--
Ticket URL: <https://code.djangoproject.com/ticket/28194#comment:5>

Django

unread,
Mar 23, 2020, 6:49:21 AM3/23/20
to django-...@googlegroups.com
#28194: Add search rank cd function and normalization for Postgres full text search
-------------------------------------+-------------------------------------
Reporter: Andrii Soldatenko | Owner: Hannes
| Ljungberg
Type: New feature | Status: closed
Component: contrib.postgres | Version: master
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak <felisiak.mariusz@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"0b51a4f8946178daf469bec4cbedbc02a23cf814" 0b51a4f]:
{{{
#!CommitTicketReference repository=""
revision="0b51a4f8946178daf469bec4cbedbc02a23cf814"
Fixed #28194 -- Added support for normalization and cover density to
SearchRank.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/28194#comment:6>

Reply all
Reply to author
Forward
0 new messages