当前位置:网站首页>Using flask_ Whooshalchemyplus Jieba realizes global search of flask
Using flask_ Whooshalchemyplus Jieba realizes global search of flask
2022-07-06 14:36:00 【Xiaobai aYuan】
Preface
because flask_SqlAlchemy Full text search is not yet supported , So use flask_whooshalchemyplus To achieve
for example : With the development of artificial intelligence , Machine learning is becoming more and more important , A lot of people have turned on learning machine learning , This paper introduces the basic content of machine learning .
Whoosh It is a class library containing classes and methods used to index text and search according to the index .
install flask_whooshalchemyplus jieba
pip install flask_whooshalchemyplus
Version is 0.7.6
If directly pip When the installation is unsuccessful, you can take the following methods
git clone https://github.com/Revolution1/Flask-WhooshAlchemyPlus.git
First the Flask-WhooshAlchemyPlus Clone to a local project and
cd Flask-WhooshAlchemyPlus Enter the price asking folder that clones to the local site, and then
pip install flask_whooshalchemyplus
pip install SQLAlchemy==1.3.24
We need to pay attention to SQLAlchemy edition ,1.4 There will be problems
jieba
jieba It is an excellent third-party Chinese Thesaurus , It can avoid problems caused by Chinese coding
pip install jieba
Full text search is equivalent to adding full-text index to the project
therefore flask The location of the full-text index should be added to the project configuration file
Project profile config.py
import os
basedir = os.path.abspath(os.path.dirname(__file__))
# Index storage location
WHOOSH_BASE = os.path.join(basedir, 'WHOOSH_BASE_INDEX')
init.py Initialization in factory function
import flask_whooshalchemyplus
#create_app() A function is a factory function of a program , Take a parameter , Is the configuration name used by the program
def create_app(config_name):
app = Flask(__name__)
# After the program is created and configured , You can initialize the extension . Call on the previously created extension object init_app() Initialization can be completed The process .
db.init_app(app)
with app.app_context():
flask_whooshalchemyplus.index_all(app)
# The factory function returns the created program example
return app
Changes in model classes
In the model class, specify the fields that need to be used as full-text indexes , And change the default word breaker to jieba Chinese word segmentation in
Join Chinese search support
__analyzer__ = ChineseAnalyzer()
For example, put desc And title As full-text index
from jieba.analyse.analyzer import ChineseAnalyzer
# Indicate the fields that are full-text indexes
__searchable__ = ['title', 'desc']
# Change the default word breaker to jieba The Chinese word segmentation device of
__analyzer__ = ChineseAnalyzer()
Achieve the effect in the view
If new data is added to the database , Remember to update the index with the following code
db.session.add(course)
db.session.commit()
flask_whooshalchemyplus.index_one_model(Course)
Write an interface to realize the use of full-text indexing
class SearchCourse(Resource):
"""
Get all the information including the search content
"""
def get(self):
parser = reqparse.RequestParser()
# Get the data from the front end
parser.add_argument('q')
args = parser.parse_args()
q = args.get('q')
# Use whoosh_search(), Use the data transmitted from the front end as the search keywords
course_list = Course.query.whoosh_search(q).all()
# Return the obtained data
return marshal(course_list, course_fields)
Here you can basically realize full-text indexing and full-text search in Chinese
边栏推荐
- 【指针】删除字符串s中的所有空格
- Wu Enda's latest interview! Data centric reasons
- 《统计学》第八版贾俊平第三章课后习题及答案总结
- 刷视频的功夫,不如看看这些面试题你掌握了没有,慢慢积累月入过万不是梦。
- XSS unexpected event
- 《统计学》第八版贾俊平第四章总结及课后习题答案
- Fire! One day transferred to go engineer, not fire handstand sing Conquest (in serial)
- 关于超星脚本出现乱码问题
- Uibutton status exploration and customization
- How to earn the first pot of gold in CSDN (we are all creators)
猜你喜欢
Realize applet payment function with applet cloud development (including source code)
Statistics, 8th Edition, Jia Junping, Chapter VIII, summary of knowledge points of hypothesis test and answers to exercises after class
An unhandled exception occurred when C connected to SQL Server: system Argumentexception: "keyword not supported:" integrated
List and data frame of R language experiment III
JDBC看这篇就够了
《统计学》第八版贾俊平第十二章多元线性回归知识点总结及课后习题答案
关于超星脚本出现乱码问题
JDBC read this article is enough
captcha-killer验证码识别插件
servlet中 servlet context与 session与 request三个对象的常用方法和存放数据的作用域。
随机推荐
四元数---基本概念(转载)
内网渗透之内网信息收集(四)
《统计学》第八版贾俊平第十三章时间序列分析和预测知识点总结及课后习题答案
Mathematical modeling idea of 2022 central China Cup
数字电路基础(一)数制与码制
Binary search tree concept
MSF generate payload Encyclopedia
数字电路基础(三)编码器和译码器
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 transactions, batch processing, and connection pooling (super detailed)
Numpy快速上手指南
我的第一篇博客
《统计学》第八版贾俊平第九章分类数据分析知识点总结及课后习题答案
函数:求两个正数的最大公约数和最小公倍
JDBC 的四种连接方式 直接上代码
【指针】数组逆序重新存放后并输出
ES全文索引
JDBC看这篇就够了
MySQL interview questions (4)