flask 的搜索引擎

flask 的搜索引擎,第1张

搜索引擎主要分6步

  1. 安装flask_whooshalchemyplus
  2. 创建工厂类的配置
  3. 配置文件settings
  4. Model 设置
  5. 搜索数据
  6. 更新数据
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__ = ['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)

就是这样结束 如果有其他问题 还要小伙伴们指出,谢谢观赏

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/883248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存