Opened 8 years ago
Closed 5 years ago
#28194 closed New feature (fixed)
Add search rank cd function and normalization for Postgres full text search
Reported by: | Andrii Soldatenko | Owned by: | Hannes Ljungberg |
---|---|---|---|
Component: | contrib.postgres | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
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')
Change History (6)
comment:1 by , 8 years ago
Component: | Uncategorized → contrib.postgres |
---|---|
Type: | Uncategorized → New feature |
comment:2 by , 8 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:3 by , 8 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:4 by , 5 years ago
Has patch: | set |
---|---|
Owner: | changed from | to
Patch needs improvement: | set |
comment:5 by , 5 years ago
Patch needs improvement: | unset |
---|---|
Triage Stage: | Accepted → Ready for checkin |
Version: | 1.11 → master |
https://github.com/django/django/pull/12597