当前位置:网站首页>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
边栏推荐
- The difference between layer 3 switch and router
- Lintcode logo queries the two nearest saplings
- 《统计学》第八版贾俊平第十一章一元线性回归知识点总结及课后习题答案
- [pointer] the array is stored in reverse order and output
- Captcha killer verification code identification plug-in
- Statistics 8th Edition Jia Junping Chapter 12 summary of knowledge points of multiple linear regression and answers to exercises after class
- XSS unexpected event
- 《统计学》第八版贾俊平第五章概率与概率分布
- 【指针】使用插入排序法将n个数从小到大进行排列
- Fire! One day transferred to go engineer, not fire handstand sing Conquest (in serial)
猜你喜欢
循环队列(C语言)
Chain team implementation (C language)
Mysql的事务是什么?什么是脏读,什么是幻读?不可重复读?
MySQL中什么是索引?常用的索引有哪些种类?索引在什么情况下会失效?
Realize applet payment function with applet cloud development (including source code)
Internet Management (Information Collection)
ES全文索引
Statistics 8th Edition Jia Junping Chapter 7 Summary of knowledge points and answers to exercises after class
图书管理系统
四元数---基本概念(转载)
随机推荐
Attack and defense world misc practice area (simplerar, base64stego, no matter how high your Kung Fu is, you are afraid of kitchen knives)
An unhandled exception occurred when C connected to SQL Server: system Argumentexception: "keyword not supported:" integrated
《统计学》第八版贾俊平第十章方差分析知识点总结及课后习题答案
On the idea of vulnerability discovery
Matplotlib绘图快速入门
Library management system
Record an edu, SQL injection practice
《统计学》第八版贾俊平第六章统计量及抽样分布知识点总结及课后习题答案
《統計學》第八版賈俊平第七章知識點總結及課後習題答案
内网渗透之内网信息收集(二)
“人生若只如初见”——RISC-V
XSS unexpected event
Statistics 8th Edition Jia Junping Chapter 10 summary of knowledge points of analysis of variance and answers to exercises after class
Hcip -- MPLS experiment
Statistics 8th Edition Jia Junping Chapter 12 summary of knowledge points of multiple linear regression and answers to exercises after class
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
[pointer] solve the last person left
函数:计算字符串中大写字母的个数
Pointeurs: maximum, minimum et moyenne
Pointers: maximum, minimum, and average