当前位置:网站首页>使用 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)
到这里基本上就可以实现全文索引并且可以使用中文实现全文搜索
边栏推荐
- 搭建域环境(win)
- Low income from doing we media? 90% of people make mistakes in these three points
- Web vulnerability - File Inclusion Vulnerability of file operation
- Intranet information collection of Intranet penetration (5)
- 《统计学》第八版贾俊平第五章概率与概率分布
- Database monitoring SQL execution
- 循环队列(C语言)
- How does SQLite count the data that meets another condition under the data that has been classified once
- Windows platform mongodb database installation
- Attack and defense world misc practice area (simplerar, base64stego, no matter how high your Kung Fu is, you are afraid of kitchen knives)
猜你喜欢
《統計學》第八版賈俊平第七章知識點總結及課後習題答案
Résumé des points de connaissance et des réponses aux exercices après la classe du chapitre 7 de Jia junping dans la huitième édition des statistiques
Chain team implementation (C language)
Hackmyvm target series (5) -warez
JDBC事务、批处理以及连接池(超详细)
Statistics, 8th Edition, Jia Junping, Chapter VIII, summary of knowledge points of hypothesis test and answers to exercises after class
Proceedingjoinpoint API use
7-7 7003 combination lock (PTA program design)
New version of postman flows [introductory teaching chapter 01 send request]
记一次api接口SQL注入实战
随机推荐
内网渗透之内网信息收集(五)
"Gold, silver and four" job hopping needs to be cautious. Can an article solve the interview?
xray与burp联动 挖掘
网络基础之路由详解
7-8 7104 Joseph problem (PTA program design)
Realize applet payment function with applet cloud development (including source code)
《統計學》第八版賈俊平第七章知識點總結及課後習題答案
Network layer - simple ARP disconnection
Windows platform mongodb database installation
How to earn the first pot of gold in CSDN (we are all creators)
Spot gold prices rose amid volatility, and the rise in U.S. prices is likely to become the key to the future
[err] 1055 - expression 1 of order by clause is not in group by clause MySQL
HackMyvm靶机系列(3)-visions
Which is more advantageous in short-term or long-term spot gold investment?
Applet Web Capture -fiddler
Intranet information collection of Intranet penetration (2)
2022华中杯数学建模思路
Experiment 7 use of common classes (correction post)
Bing Dwen Dwen official NFT blind box will be sold for about 626 yuan each; JD home programmer was sentenced for deleting the library and running away; Laravel 9 officially released | Sifu weekly
JDBC看这篇就够了