为什么我们需要每个类有多个搜索向量? (SQLAlchemy的可搜索)

时间:2013-11-22 15:23:26

标签: python postgresql sqlalchemy

我正在浏览sqlalchemy-searchable文档,他们为同一个类提供了多个搜索向量。为什么这会有用?

例如

(来自文档)

class Article(Base):
    __tablename__ = 'article'

    id = sa.Column(sa.Integer, primary_key=True)
    name = sa.Column(sa.Unicode(255))
    content = sa.Column(sa.UnicodeText)
    description = sa.Column(sa.UnicodeText)
    simple_search_vector = sa.Column(TSVectorType('name'))

    fat_search_vector = sa.Column(
        TSVectorType('name', 'content', 'desription')
    )

我已经拥有fat_search_vector,其中包含name。为什么simple_search_vector会有用?

2 个答案:

答案 0 :(得分:2)

只是一个疯狂的猜测:允许你搜索标题(简单搜索),vs行搜索(胖搜索)?

答案 1 :(得分:2)

我正在使用它进行多语言搜索:

class Article(Base):
    __tablename__ = 'article'

    id = sa.Column(sa.Integer, primary_key=True)
    name_en = sa.Column(sa.Unicode(255))
    name_es = sa.Column(sa.Unicode(255))
    search_vector_es = sa.Column(TSVectorType('name_es'))
    search_vector_en = sa.Column(TSVectorType('name_en'))

但是,现在你必须安装开发版本(来自GitHub)才能选择在搜索中使用哪个向量。

query = db.query(Article)
vector = getattr(Article, 'search_vector_{0}'.format(lang)
results = search(query, vector=vector)