我在Sqlalchemy模型中实现向量搜索。你知道吗
下表如下:
class MyModel(db.Model):
title = db.Column(db.String(100))
description = db.Column(postgresql.JSONB, server_default='{}')
search_vector = db.Column(TSVectorType('title', 'description', nullable=True) # created the search vector here
现在,搜索应该基于两个字段:'title'和'description'。你知道吗
'description'字段是JSONB类型,因此我在DB迁移文件中使用了下面的函数来实现对该列的搜索-
def upgrade():
vectorizer.clear()
conn = op.get_bind()
register_composites(conn)
op.add_column('my_model', sa.Column('search_vector', sa.Text, nullable=True), schema='my_schema')
metadata = MetaData(schema='my_schema')
@vectorizer(postgresql.JSONB)
def data_vectorizer(column):
return sa.cast(column, sa.Text)
sync_trigger(conn, 'my_model', 'search_vector', ['title', 'description'], metadata=metadata)
op.create_index(op.f('ix_my_model_search_vector'), 'my_model', ['search_vector'], unique=False,
schema='my_schema')
搜索很顺利。
问题:
description字段的值类似于:{'section': 'abc', 'item': 'xyz'}
。你知道吗
现在当我搜索时,如果section
的值是'abc'
,我希望搜索一个记录。但是如果我用值-'section'
搜索,那么它也会显示记录。这是因为值-{'section': 'abc', 'item': 'xyz'}
将转换成字符串,因此关键字'section'
也将被搜索,这是我不想要的。你知道吗
只搜索abc
而不搜索section
的任何解?你知道吗
提前谢谢。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐