python - 如何在 Django 3 中创建具有多列的 Trigram 索引
问题描述
我已经使用 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")
)
我曾尝试从各种帖子中创建自己的索引,但我对索引不太熟悉,而且我实现的每一个都对查询时间没有影响。
解决方案
推荐阅读
- python - RuntimeError:此事件循环已在运行错误(在 Scrape Tweets 中并使用 Twint 而不是 Twitter API 创建数据集)
- flutter - Dart: floor() 和 toInt() 有什么区别
- angular - Angular Material中的Material Table(Mat Table)可以有多个数据源吗?
- java - Java eclipse 缺少一些导入类的快捷方式
- python - 为什么我不能使用 BeautifulSoup 获得具有特定类名的 div?
- python-3.x - 如何使用填充了 Excel 值的列表更新 ListBox 中的值?
- apache - 同一服务器上的多个站点(Centos 7 - apache)第二个站点进入 apache 欢迎页面
- javascript - ReactJS 浏览器 Websocket 连接到 SpringBoot Websocket
- flutter - 颤振:将旧项目迁移到零安全
- arrays - 如何从以下 json 数组类型创建线串几何?