flask 的whoosh搜索引擎

搜索引擎主要分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__ 搜索的字段
__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)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值