当前位置:网站首页>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 appChanges 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
边栏推荐
- XSS unexpected event
- 浙大版《C语言程序设计实验与习题指导(第3版)》题目集
- Database monitoring SQL execution
- SQL injection
- 《统计学》第八版贾俊平第四章总结及课后习题答案
- Interview Essentials: what is the mysterious framework asking?
- [issue 18] share a Netease go experience
- Record an API interface SQL injection practice
- Record an edu, SQL injection practice
- Feature extraction and detection 14 plane object recognition
猜你喜欢

Solutions to common problems in database development such as MySQL

Captcha killer verification code identification plug-in

MySQL中什么是索引?常用的索引有哪些种类?索引在什么情况下会失效?

Uibutton status exploration and customization

Ucos-iii learning records (11) - task management

5分钟掌握机器学习鸢尾花逻辑回归分类

数字电路基础(一)数制与码制

Keil5-MDK的格式化代码工具及添加快捷方式

JDBC事务、批处理以及连接池(超详细)

《统计学》第八版贾俊平第十章方差分析知识点总结及课后习题答案
随机推荐
Apache APIs IX has the risk of rewriting the x-real-ip header (cve-2022-24112)
Ucos-iii learning records (11) - task management
Function: find the maximum common divisor and the minimum common multiple of two positive numbers
[pointer] octal to decimal
5分钟掌握机器学习鸢尾花逻辑回归分类
[pointer] counts the number of times one string appears in another string
Low income from doing we media? 90% of people make mistakes in these three points
Functions: Finding Roots of equations
Network technology related topics
刷视频的功夫,不如看看这些面试题你掌握了没有,慢慢积累月入过万不是梦。
Solutions to common problems in database development such as MySQL
后台登录系统,JDBC连接数据库,做小案例练习
Proceedingjoinpoint API use
【指针】求字符串的长度
Statistics 8th Edition Jia Junping Chapter 7 Summary of knowledge points and answers to exercises after class
Always of SystemVerilog usage_ comb 、always_ iff
Pointers: maximum, minimum, and average
How to earn the first pot of gold in CSDN (we are all creators)
servlet中 servlet context与 session与 request三个对象的常用方法和存放数据的作用域。
函数:求两个正数的最大公约数和最小公倍