当前位置:网站首页>使用 flask_whooshalchemyplus jieba实现flask的全局搜索
使用 flask_whooshalchemyplus jieba实现flask的全局搜索
2022-07-06 09:24:00 【小白阿远】
前言
因为flask_SqlAlchemy尚未支持全文搜索,所以使用flask_whooshalchemyplus来实现
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
Whoosh是一个用来索引文本并能根据索引搜索的的包含类和方法的类库。
安装 flask_whooshalchemyplus jieba
pip install flask_whooshalchemyplus
版本为0.7.6
若直接pip安装不成功的时候可以采取以下方法
git clone https://github.com/Revolution1/Flask-WhooshAlchemyPlus.git
先将Flask-WhooshAlchemyPlus克隆到本地项目中然后
cd Flask-WhooshAlchemyPlus进入到克隆到本地的问价夹中再进行
pip install flask_whooshalchemyplus
pip install SQLAlchemy==1.3.24
需要注意SQLAlchemy版本,1.4会出现问题
jieba
jieba是优秀的第三方中文词库,可以避免因为中文编码出现的问题
pip install jieba
全文搜索相当于给项目加上了全文索引
所以flask项目配置文件中应该加上全文索引的位置
项目配置文件config.py
import os
basedir = os.path.abspath(os.path.dirname(__file__))
# 索引存放位置
WHOOSH_BASE = os.path.join(basedir, 'WHOOSH_BASE_INDEX')init.py工厂函数中的初始化
import flask_whooshalchemyplus
#create_app() 函数就是程序的工厂函数,接受一个参数,是程序使用的配置名
def create_app(config_name):
app = Flask(__name__)
#程序创建并配置好后,就能初始化扩展了。在之前创建的扩展对象上调用 init_app() 可以完成初始化 过程。
db.init_app(app)
with app.app_context():
flask_whooshalchemyplus.index_all(app)
#工厂函数返回创建的程序示例
return app模型类的变化
在模型类里便写明需要作为全文索引的字段,以及将默认的分词器改为jieba中的中文分词器
加入中文搜索支持
__analyzer__ = ChineseAnalyzer()
例如将表中的desc及title作为全文索引
from jieba.analyse.analyzer import ChineseAnalyzer
# 指明作为全文索引的字段
__searchable__ = ['title', 'desc']
# 将默认的分词器改为jieba的中文分词器
__analyzer__ = ChineseAnalyzer()在视图中实现效果
如果数据库里增加了新的数据的话,切记一定要使用如下代码更新索引
db.session.add(course)
db.session.commit()
flask_whooshalchemyplus.index_one_model(Course)写一个接口来实现全文索引的使用
class SearchCourse(Resource):
"""
获取包含搜索内容的全部信息
"""
def get(self):
parser = reqparse.RequestParser()
# 获取前端传过来的数据
parser.add_argument('q')
args = parser.parse_args()
q = args.get('q')
# 使用whoosh_search(), 将前端传过来的数据作为搜索的关键字进行搜索
course_list = Course.query.whoosh_search(q).all()
# 将得到的数据返回出去
return marshal(course_list, course_fields)到这里基本上就可以实现全文索引并且可以使用中文实现全文搜索
边栏推荐
- 链队实现(C语言)
- Statistics 8th Edition Jia Junping Chapter 7 Summary of knowledge points and answers to exercises after class
- Intranet information collection of Intranet penetration (4)
- Windows platform mongodb database installation
- 小程序web抓包-fiddler
- Ucos-iii learning records (11) - task management
- 内网渗透之内网信息收集(一)
- MSF generate payload Encyclopedia
- Based on authorized access, cross host, and permission allocation under sqlserver
- DVWA (5th week)
猜你喜欢

关于超星脚本出现乱码问题

内网渗透之内网信息收集(五)

WEB漏洞-文件操作之文件包含漏洞

内网渗透之内网信息收集(一)

HackMyvm靶机系列(2)-warrior

How to earn the first pot of gold in CSDN (we are all creators)

HackMyvm靶机系列(3)-visions

HackMyvm靶机系列(1)-webmaster

Data mining - a discussion on sample imbalance in classification problems

《统计学》第八版贾俊平第十三章时间序列分析和预测知识点总结及课后习题答案
随机推荐
msf生成payload大全
Load balancing ribbon of microservices
Captcha killer verification code identification plug-in
What language should I learn from zero foundation. Suggestions
Intranet information collection of Intranet penetration (4)
《英特尔 oneAPI—打开异构新纪元》
Hackmyvm target series (7) -tron
List and data frame of R language experiment III
Intranet information collection of Intranet penetration (2)
Lintcode logo queries the two nearest saplings
DVWA (5th week)
WEB漏洞-文件操作之文件包含漏洞
Realize applet payment function with applet cloud development (including source code)
A complete collection of papers on text recognition
SystemVerilog discusses loop loop structure and built-in loop variable I
攻防世界MISC练习区(gif 掀桌子 ext3 )
Detailed explanation of three ways of HTTP caching
《统计学》第八版贾俊平第七章知识点总结及课后习题答案
Statistics 8th Edition Jia Junping Chapter 3 after class exercises and answer summary
关于超星脚本出现乱码问题