有没有一种方法可以在运行时生成SearchVector字段内容?

时间:2020-07-15 14:37:02

标签: django postgresql vector full-text-search

模型具有SearchVector字段和CharField内容字段。

class AModel(models.Model):
    content = models.CharField(...)
    vector = SearchVectorField()

content字段更改后,vector字段将通过以下查询进行更新:

AModel.objects.filter(id=xx).update(vector=SearchVector('content'))

如果我获取vector字段并对其进行查找,则该字段的内容如下所示:

“'2':38'3':32'4':26'5':20'bskl':14,19,25,31,37'ck':2 'clb':13,18,24,30,36'club':4'f':1'fck':11,16,22,28,34 'clb-bskl':10,15,21,27,33'kargo':9'pv':12,17,23,29,35'trt':6 'tsrt':7“

我想在python / django中生成此数据,而无需从数据库读取vector字段。

我看了SearchVector类,但是我不知道怎么可能。

1 个答案:

答案 0 :(得分:1)

我不确定“在运行时”是什么意思,但是如果您指的是使用Django获取搜索向量本身,则必须

from django.db import connection

content = 'hello world'

with connection.cursor() as cursor:
    cursor.execute('SELECT * FROM to_tsvector(%s)', [content])
    ts_vec = cursor.fetchone()[0]

print(ts_vec)

那会输出

'hello':1 'world':2