Open
Description
plus add something like .annotate(len(content)).filter(content_lentg_similaritysearch_length__gt=xy), otherwise way too many searchresults.
[bauart]
config = conf.LANGUAGE_2_PGCONFIG.get(self.request.LANGUAGE_CODE, "english")
search_vector = SearchVector(
"content",
"title",
config=config,
)
search_query = SearchQuery(q)
qs = (
IndexEntry.objects.annotate(
search=search_vector,
rank=SearchRank(search_vector, search_query),
tg_similarity=TrigramSimilarity(Unaccent("title"), q)
+ TrigramSimilarity(Unaccent("content"), q),
)
.filter(index_key=self.request.LANGUAGE_CODE)
.filter(
Q(search=q)
| Q(tg_similarity__gt=0)
# Q(content__trigram_similar=q)
# | Q(title__trigram_similar=q)
)
.order_by("-rank", "-tg_similarity")
)
UPDATE: this is really hard to balance right. Many times it will find too many and awkward results. To be continued.