add trigrams to full text search
This commit is contained in:
parent
6eaf519fd6
commit
2eeb642c34
@ -55,17 +55,22 @@ def search_recipes(queryset, params):
|
|||||||
+ SearchVector(StringAgg('steps__ingredients__food__name__unaccent', delimiter=' '), weight='B', config=language)
|
+ SearchVector(StringAgg('steps__ingredients__food__name__unaccent', delimiter=' '), weight='B', config=language)
|
||||||
+ SearchVector(StringAgg('keywords__name__unaccent', delimiter=' '), weight='B', config=language))
|
+ SearchVector(StringAgg('keywords__name__unaccent', delimiter=' '), weight='B', config=language))
|
||||||
trigram = (
|
trigram = (
|
||||||
TrigramSimilarity('name', search_string)
|
TrigramSimilarity('name__unaccent', search_string)
|
||||||
+ TrigramSimilarity('description', search_string)
|
+ TrigramSimilarity('description__unaccent', search_string)
|
||||||
|
# adding trigrams to ingredients causes duplicate results that can't be made unique
|
||||||
|
# + TrigramSimilarity('steps__ingredients__food__name__unaccent', search_string)
|
||||||
|
# + TrigramSimilarity('keywords__name__unaccent', search_string)
|
||||||
)
|
)
|
||||||
search_rank = SearchRank(search_vectors, search_query)
|
search_rank = SearchRank(search_vectors, search_query)
|
||||||
queryset = (
|
queryset = (
|
||||||
queryset.annotate(
|
queryset.annotate(
|
||||||
vector=search_vectors,
|
vector=search_vectors,
|
||||||
rank=search_rank + trigram,
|
rank=search_rank + trigram,
|
||||||
|
trigram=trigram
|
||||||
)
|
)
|
||||||
.filter(
|
.filter(
|
||||||
vector=search_query
|
Q(vector=search_query)
|
||||||
|
| Q(trigram__gt=0.2)
|
||||||
)
|
)
|
||||||
.order_by('-rank'))
|
.order_by('-rank'))
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user