我已经使用 annotate 实现了 Trigram Similarity 搜索,它在结果方面给出了我想要的结果;但我的数据库中有 220,000 条记录,每次查询需要 5 多秒的时间,这太长了。
搜索包含 3 列,其中之一调用连接。如何添加索引或等效的 SearchVectorField 但 Trigram 可以加快我的查询速度?
请参阅下面的当前代码:
trig_vector = (
TrigramSimilarity("make__name", text)
+ TrigramSimilarity("model", text)
+ TrigramSimilarity("specification", text)
)
query_set = (
cls.objects.annotate(similarity=trig_vector)
.filter(similarity__gt=0.5)
.order_by("-similarity")
)
我曾尝试从各种帖子中创建自己的索引,但我对索引不太熟悉,而且我实现的每一个都对查询时间没有影响。