优化Django文本字段查找
我有一个存储文本对象的简单模型:优化Django文本字段查找,django,postgresql,django-models,Django,Postgresql,Django Models,我有一个存储文本对象的简单模型: class Text(models.Model): content = models.TextField() 我需要内容字段是唯一的。因此,我在其上创建了一个自定义唯一索引: CREATE UNIQUE INDEX text_md5 ON text_table (md5(content)); 现在,我查询选择特定行: Text.objects.get(content='sample text.') Text.objects.filter(conten
class Text(models.Model):
content = models.TextField()
我需要内容
字段是唯一的。因此,我在其上创建了一个自定义唯一索引:
CREATE UNIQUE INDEX text_md5 ON text_table (md5(content));
现在,我查询选择特定行:
Text.objects.get(content='sample text.')
Text.objects.filter(content__in=['text1', 'text2'])
而且速度非常慢。我希望postgres
使用文本对象的内容md5查找文本对象。在Django做这件事最优雅的方式是什么
另外,我想用包含过滤器查询此字段,该过滤器类似于查询:
Text.objects.get(content__contains='text')
优化这些查询的最佳索引解决方案是什么
我知道全文搜索是另一种选择。但是,我不需要复杂的搜索功能。Postgres 10哈希索引
使文本查找查询非常快速。因此,我添加了这个简单的索引:
CREATE INDEX text_hash ON text_table USING hash(content);
此索引优化了文本选择查询,而不会对我的python代码进行任何更改。您在那里存储的是什么类型的文本?你确定要文本字段(blob)而不是字符字段(varchar)?我要存储短文本和长文本内容,大约1到1000个单词。