Django Postgres поиск с помощью SearchVectorField и TrigramSimilarity - PullRequest
0 голосов
/ 09 мая 2020

Я хотел бы выполнять эффективные частичные совпадения слов с большим набором данных. Я могу использовать SearchVectorField для повышения скорости и как способ сбора данных из нескольких разных полей.

search_vector = SearchVectorField(editable=False)
Thing.objects.update(search_vector=various_fields_vector)
Thing.objects.filter(search_vector="something")

Работает быстро. Однако он не выполняет частичное совпадение слов.

Thing.objects.filter(search_vector="omething")

Не дает результатов. Я хочу сделать что-то вроде

Thing.objects.annotate(rank=TrigramSimilarity("search_vector", "omething"))

Однако я получаю:

No function matches the given name and argument types. You might need to add explicit type casts.

Есть ли способ каким-либо образом индексировать выполнять эти поиски быстрее?

...