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('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: