有没有办法在运行时生成 SearchVector 字段内容?

Is there a way to generate SearchVector field content on runtime?

模型有一个 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 class,但我不知道怎么可能。

我不确定您所说的“在运行时”是什么意思,但是如果您指的是使用 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