搜索引擎主要分6步
- 安装flask_whooshalchemyplus
- 创建工厂类的配置
- 配置文件settings
- Model 设置
- 搜索数据
- 更新数据
1.安装
1.pip install flask_whooshalchemyplus
如果安装报错 那就不适用这种安装方式
2. 第一步 :git clone https://github.com/Revolution1/Flask-WhooshAlchemyPlus.git
第二步: cd Flask-WhooshAlchemyPlus && python setup.py install
如果出现这样就成功安装好了---这只针对第二种安装方式
如果这样的话 还出现报错 那可能就是SQLAlchemy的版本问题
1.在你的操作台中查看那个 pip list
2.去查找SQLAlchemy的版本是不是1.3的
3.如果不是就卸载,如果是的话小编也没有办法了
4.pip install SQLAlchemy==1.3.24,需要注意SQLAlchemy版本,1.4会出现问题
2.创建工厂类配置
#导包
import flask_whooshalchemyplus
app = Flask(__name__, template_folder='../templates')
app.config.from_object(config)
db.init_app(app)
#添加索引
with app.app_context():
flask_whooshalchemyplus.index_all(app)
#注册蓝图
app.register_blueprint(user_bp)
#跨域
cors = CORS(app, resources={r"/*/*": {"origins": "*"}})
return app
3.配置文件
settings 里面的配置文件
import os
class Config(object):
SECRET_KEY='YFYUUVUwhudge2u378gd'
SQLALCHEMY_DATABASE_URI='mysql+pymysql://root:数据库密码@127.0.0.1:3306/库名'
SQLALCHEMY_TRACK_MODIFICATIONS=False
SQLALCHEMY_ECHO=False
REDIS_HOST = "127.0.0.1" # redis数据库地址
REDIS_PORT = 6379 # redis 端口号
REDIS_DB = 0 # 数据库名
REDIS_EXPIRE = 60 * 5 # redis 过期时间300秒
# 索引存放位置
basedir = os.path.abspath(os.path.dirname(__file__))
WHOOSH_BASE = os.path.join(basedir, 'WHOOSH_BASE_INDEX')
4.model设置
from jieba.analyse.analyzer import ChineseAnalyzer
class Tag(Base):
"""
课程标签
"""
__tablename__ = 'tag'
# __searchable__ 搜索的字段
__searchable__ = ['title']
# 可以中文字段搜索
__analyzer__ = ChineseAnalyzer()
id = db.Column(db.Integer, primary_key=True, doc='课程标签id')
title = db.Column(db.String(16), doc='课程类别')
sequence = db.Column(db.Integer, doc='展示顺序', default=10)
course = db.relationship('Course', secondary='course_tag', backref=db.backref('tags'))
def __str__(self):
return self.title
如果jieba 爆红就说明了没有这个包---进行安装----pip install jieba
5.搜索数据
class Getsearch(Resource):
"""
搜索引擎
获取前端数据
使用whoosh_search
"""
def get(self):
parser = reqparse.RequestParser()
parser.add_argument('q')
args = parser.parse_args()
search = args.get('q')
course_list = Course.query.whoosh_search(search).all()
return marshal(course_list, course_fields)
api.add_resource(Getsearch,'/search')
6.更新数据
更新有索引的数据后,需要将对应的索引添加
db.session.add(course)
db.session.commit()
flask_whooshalchemyplus.index_one_model(Course)
就是这样结束 如果有其他问题 还要小伙伴们指出,谢谢观赏