add unaccent to full text search vectors

This commit is contained in:
smilerz 2021-04-25 19:35:17 -05:00
parent c716a56b18
commit 6a7bc974e1
5 changed files with 10 additions and 10 deletions

View File

@ -89,8 +89,8 @@ admin.site.register(Step, StepAdmin)
def rebuild_index(modeladmin, request, queryset):
with scopes_disabled():
search_vector = (
SearchVector('name', weight='A')
+ SearchVector('description', weight='B'))
SearchVector('name__unaccent', weight='A')
+ SearchVector('description__unaccent', weight='B'))
queryset.update(search_vector=search_vector)

View File

@ -18,8 +18,8 @@ class Command(BaseCommand):
try:
with scopes_disabled():
search_vector = (
SearchVector('name', weight='A')
+ SearchVector('description', weight='B'))
SearchVector('name__unaccent', weight='A')
+ SearchVector('description__unaccent', weight='B'))
Recipe.objects.all().update(search_vector=search_vector)
self.stdout.write(self.style.SUCCESS(_('Recipe index rebuild complete.')))

View File

@ -34,8 +34,8 @@ class RecipeSearchManager(models.Manager):
)
search_vectors = (
SearchVector('search_vector')
+ SearchVector(StringAgg('steps__ingredients__food__name', delimiter=' '), weight='B', config=language)
+ SearchVector(StringAgg('keywords__name', 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))
search_rank = SearchRank(search_vectors, search_query)
# USING TRIGRAM BREAKS WEB SEARCH
# ADDING MULTIPLE TRIGRAMS CREATES DUPLICATE RESULTS

View File

@ -12,8 +12,8 @@ def set_default_search_vector(apps, schema_editor):
return
with scopes_disabled():
search_vector = (
SearchVector('name', weight='A')
+ SearchVector('description', weight='B'))
SearchVector('name__unaccent', weight='A')
+ SearchVector('description__unaccent', weight='B'))
Recipe.objects.all().update(search_vector=search_vector)

View File

@ -18,8 +18,8 @@ def update_recipe_search_vector(sender, instance=None, created=False, **kwargs):
language = DICTIONARY.get(translation.get_language(), 'simple')
instance.search_vector = (
SearchVector('name', weight='A', config=language)
+ SearchVector('description', weight='C', config=language)
SearchVector('name__unaccent', weight='A', config=language)
+ SearchVector('description__unaccent', weight='C', config=language)
)
try: