More efficient search index

Co-authored-by: asmr-hex <0.0@asmr.software>
This commit is contained in:
Mouse Reeve
2021-06-23 16:14:59 -07:00
parent ae1d0343ba
commit 7c15fbbb0b
4 changed files with 87 additions and 10 deletions

View File

@ -2,7 +2,7 @@
from functools import reduce
import operator
from django.contrib.postgres.search import SearchRank, SearchVector
from django.contrib.postgres.search import SearchRank
from django.db.models import OuterRef, Subquery, F, Q
from bookwyrm import models
@ -141,16 +141,9 @@ def search_identifiers(query, *filters):
def search_title_author(query, min_confidence, *filters):
"""searches for title and author"""
vector = (
SearchVector("title", weight="A")
+ SearchVector("subtitle", weight="B")
+ SearchVector("authors__name", weight="C")
+ SearchVector("series", weight="D")
)
results = (
models.Edition.objects.annotate(rank=SearchRank(vector, query))
.filter(*filters, rank__gt=min_confidence)
models.Edition.objects.annotate(rank=SearchRank("search_vector", query))
.filter(*filters, search_vector=query, rank__gt=min_confidence)
.order_by("-rank")
)