add trigrams to full text search

This commit is contained in:
smilerz 2021-04-25 19:50:51 -05:00
parent 6eaf519fd6
commit 2eeb642c34

View File

@ -55,17 +55,22 @@ def search_recipes(queryset, params):
+ SearchVector(StringAgg('steps__ingredients__food__name__unaccent', delimiter=' '), weight='B', config=language)
+ SearchVector(StringAgg('keywords__name__unaccent', delimiter=' '), weight='B', config=language))
trigram = (
TrigramSimilarity('name', search_string)
+ TrigramSimilarity('description', search_string)
TrigramSimilarity('name__unaccent', 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)
queryset = (
queryset.annotate(
vector=search_vectors,
rank=search_rank + trigram,
trigram=trigram
)
.filter(
vector=search_query
Q(vector=search_query)
| Q(trigram__gt=0.2)
)
.order_by('-rank'))
else: