【发布时间】:2017-06-05 06:04:49
【问题描述】:
所以我在我的 Django (postgres) 后端有一个搜索端点的查询,如下所示:
widgets = Widgets.objects.\
filter(user=request.user).\
filter(title__icontains="marketing director").\
distinct('url')[:250]
title 是一个 CHAR 字段(models.CharField(max_length=255, blank=True) 在 django 中)。
contains 这里当然相当于 Postgres 中的 '%LIKE%' 查询。我特别想要这个(即:不是中缀'LIKE%' 搜索)。
我想加快查询速度。
似乎大多数 postgres 文本搜索的优化只针对 TEXT 字段 - 有没有办法加快对 CHAR 列的精确字符串搜索?
我可以使用 Postgres trigram 索引,但我实际上不需要模糊/拼写错误类型的搜索。不过如果出于某种原因它实际上更快,我会很乐意使用它。
或者我是否最好将这些列转换为 TEXT,承受存储量增加的影响,并以某种方式更好地为它们编制索引?
【问题讨论】:
-
这些都很棒,但我没有看到完整的性能细分,也没有看到什么是最快的。
-
您应该包括一些您正在执行查询的数据示例以及
data['query']实际可能包含的内容。这是因为例如提到的文本搜索功能适用于单词/词素的文档,但您当前正在对字符串执行模式匹配。 -
@IljaEverilä 完成
标签: python django postgresql