首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >make_searchable没有返回任何结果

make_searchable没有返回任何结果
EN

Stack Overflow用户
提问于 2018-02-21 01:46:08
回答 1查看 139关注 0票数 0

我试图在烧瓶应用程序上使用搜索功能。它似乎正确地保存在数据库中,但是查询没有返回任何内容。

数据库模型:

代码语言:javascript
复制
app = Flask(__name__)
csrf = CsrfProtect(app)
csrf.init_app(app)

db = SQLAlchemy(app)

class ArticleQuery(BaseQuery, SearchQueryMixin):
    pass


class latest_movies_scraper(db.Model):
    query_class = ArticleQuery
    __tablename__ = 'latest_movies_scraper'
    id = db.Column(sa.Integer, primary_key=True)
    name = db.Column(db.Unicode(255))
    url = db.Column(db.Unicode(255))
    image_url = db.Column(db.Unicode(255))
    create = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    search_vector = db.Column(TSVectorType('name'))

如何保存到数据库:

代码语言:javascript
复制
check_if_exists = latest_movies_scraper.query.filter_by(name=dictionary['title']).first()

                    if check_if_exists:
                        print check_if_exists.name
                        print 'skipping this...'
                        pass
                    else:

                        insert_to_db = latest_movies_scraper(name=dictionary['title'], url=dictionary['href'], image_url=dictionary['featured_image'])
                        db.session.add(insert_to_db)
                        db.session.commit()

我是如何使用搜索功能的:

代码语言:javascript
复制
name = latest_movies_scraper.query.search(u'Black Panther (2018)').limit(5).all()

Name返回空数组,但它应该返回名称列表。

上面我的目标是从数据库中查询名称。当我的数据库中存在名字“黑豹2018年”时,它不会给我任何信息。因此,搜索功能不像预期的那样工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-21 18:47:06

SQLAlchemy-可搜索不对现有数据进行索引。这必须通过执行同步来手动完成。对于上面的表定义,下面的代码就足够了:

代码语言:javascript
复制
from sqlalchemy_searchable import sync_trigger

def sync_fts():
    sync_trigger(db.engine, 'latest_movies_scraper', 'search_vector', ['name'])

这段代码通常是db管理工具(Flask,Click)的一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48896993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档