有没有办法在运行时生成 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
模型有一个 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