记——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')
配置完后,浏览器访问,视图函数中会生成索引文件。