目前,我正在运行以下代码:
User.query.filter(or_(User.username.contains(query), User.name.contains(query)))
但很自然地,当你打几百万条记录并搜索多个列时,LIKE "%query%"
开始变得昂贵。 Whoosh
严重过时,sqlalchemy-fulltext-search
似乎不想使用我的Flask结构。除了切换到PostgreSQL
之外,我还有什么选择可以考虑吗?
Flask_sqlalchemy
是你的ORM而不是你的DBMS。您可以将它与PostgreSQL一起用作数据库。
在您的情况下,如何查询数据库是最重要的。
SQLAlchemy
允许您执行原始SQL
命令,因此您可以自己编写查询命令,而不是使用Model.query.filter()
。
因此,一种选择是自己更有效地编写select expressions
。
弹性搜索抽象了许多有效的算法供您使用!你可以依靠elasticsearch搜索你的数据库。