如何使用 sqlite 数据库在 Flask sqlalchemy 中进行全文搜索

Eol*_*uha 5 python sqlite sqlalchemy flask

我正在尝试使用 Flask sqlalchemy 在 Flask 中进行简单的全文搜索,到目前为止我发现:

  • Flask-WhooshAlchemy。仅适用于 python2。它非常简单并且“它就可以工作”,但我使用的是Python3。
  • Flask-WhooshAlchemy3。只是无法让它发挥作用。github ( https://github.com/blakev/Flask-WhooshAlchemy3 )上的说明未显示完整说明。我能够将它放在一起,对其进行索引,但收到“AttributeError:'BaseQuery'对象没有属性'搜索''错误(这意味着要解决)并且无法进展。

到目前为止,使用Flask-WhooshAlchemy3的说明我得到了这个


from datetime import datetime

import flask_sqlalchemy
import flask_whooshalchemy3
from whoosh.analysis import StemmingAnalyzer

db = flask_sqlalchemy.SQLAlchemy()


class BlogPost(db.Model):
    __tablename__ = 'posts'
    __searchable__ = ['title', 'content', 'summary']  # indexed fields
    __analyzer__ = StemmingAnalyzer()

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255), unique=True)
    content = db.Column(db.Text(32 * 1024))
    summary = db.Column(db.String(1024))
    created = db.Column(db.DateTime, default=datetime.utcnow)

@app.route('/posts')
def posts():
    num_posts = min(request.args.get('limit', 10), 50)
    query = request.args.get('q', '')
    results = BlogPost.query.search(query, limit=num_posts)
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误: AttributeError: 'BaseQuery' object has no attribute 'search'

我是否缺少一些配置,或者是否有比Flask-WhooshAlchemy3更好的选择