记——flask实现全文搜索

参考:

flask入门和进阶十(实现全文搜索)已解决:https://blog.csdn.net/chengmo123/article/details/100552287

一、首先安装flask-whooshalchemyplus

https://github.com/Revolution1/Flask-WhooshAlchemyPlus 源码下载后用:python setup.py install安装

二、项目app做初始化flask-whooshalchemyplus

import flask_whooshalchemyplus

# 初始化搜索
flask_whooshalchemyplus.init_app(app)

三、模型类中添加属性:

 __searchable__ :表示按什么字段进行检索

__analyzer__ :可以添加jieba分词中的中文分词类

class Area(BaseModel,db.Model):
    """城区模型类"""

    __tablename__ = "ih_area_info"

    # 以titile字段搜索
    __searchable__ = ['id','name']

    # 中文分析
    from jieba.analyse.analyzer import ChineseAnalyzer
    __analyzer__ = ChineseAnalyzer()

    id = db.Column(db.Integer,primary_key=True)  # 区域编号
    name = db.Column(db.String(32), nullable=False)  # 区域名字
    house = db.relationship("House", backref='area')  # 区域的房屋

四、路由函数中使用:

@api.route('/search',methods=["GET","POST"])
def search():
    if request.method == "POST":
        q = str(request.form.get('q'))
        result = Area.query.whoosh_search(q).all()
        return render_template('search_back.html',results=result)

    flask_whooshalchemyplus.index_one_model(Area)

    return render_template('search.html')

配置完后,浏览器访问,视图函数中会生成索引文件。

原文地址:https://www.cnblogs.com/zzmx0/p/13547419.html