当前位置:网站首页>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
边栏推荐
- Circular queue (C language)
- 指針:最大值、最小值和平均值
- 2022华中杯数学建模思路
- c语言学习总结(上)(更新中)
- 函数:求方程的根
- 四元数---基本概念(转载)
- Statistics, 8th Edition, Jia Junping, Chapter 11 summary of knowledge points of univariate linear regression and answers to exercises after class
- Function: find the maximum common divisor and the minimum common multiple of two positive numbers
- Statistics, 8th Edition, Jia Junping, Chapter VIII, summary of knowledge points of hypothesis test and answers to exercises after class
- Low income from doing we media? 90% of people make mistakes in these three points
猜你喜欢
《统计学》第八版贾俊平第二章课后习题及答案总结
链队实现(C语言)
数字电路基础(四) 数据分配器、数据选择器和数值比较器
Keil5-MDK的格式化代码工具及添加快捷方式
JVM memory model concept
Attack and defense world misc practice area (simplerar, base64stego, no matter how high your Kung Fu is, you are afraid of kitchen knives)
《英特尔 oneAPI—打开异构新纪元》
Apache APIs IX has the risk of rewriting the x-real-ip header (cve-2022-24112)
Network technology related topics
关于超星脚本出现乱码问题
随机推荐
函数:计算字符串中大写字母的个数
Fundamentals of digital circuit (IV) data distributor, data selector and numerical comparator
数字电路基础(三)编码器和译码器
Apache APIs IX has the risk of rewriting the x-real-ip header (cve-2022-24112)
《统计学》第八版贾俊平第十一章一元线性回归知识点总结及课后习题答案
SystemVerilog discusses loop loop structure and built-in loop variable I
flask实现强制登陆
Intel oneapi - opening a new era of heterogeneity
Intranet information collection of Intranet penetration (3)
Fire! One day transferred to go engineer, not fire handstand sing Conquest (in serial)
Function: find the maximum common divisor and the minimum common multiple of two positive numbers
Detailed explanation of network foundation routing
Statistics 8th Edition Jia Junping Chapter 14 summary of index knowledge points and answers to exercises after class
Function: string storage in reverse order
Only 40% of the articles are original? Here comes the modification method
Numpy Quick Start Guide
“人生若只如初见”——RISC-V
The most popular colloquial system explains the base of numbers
Uibutton status exploration and customization
Chain team implementation (C language)