Django实现whoosh搜索引擎使用jieba分词


Posted in Python onApril 08, 2020

本文介绍了Django实现whoosh搜索引擎使用jieba分词,分享给大家,具体如下:

Django版本:3.0.4
python包准备:

pip install django-haystack
pip install jieba

使用jieba分词

1.cd到site-packages内的haystack包,创建并编辑ChineseAnalyzer.py文件

# (注意:pip安装的是django-haystack,但是实际包的文件夹名字为haystack)
cd /usr/local/lib/python3.8/site-packages/haystack/backends/
# 创建并编辑ChineseAnalyzer.py文件
vim ChineseAnalyzer.py

2.修改ChineseAnalyzer.py文件内容

import jieba
from whoosh.analysis import Tokenizer, Token


class ChineseTokenizer(Tokenizer):
  def __call__(self, 
         value,
         positions=False, 
         chars=False,
         keeporiginal=False, 
         removestops=True,
         start_pos=0, 
         start_char=0,
         mode='', 
         **kwargs):
  t = Token(positions, chars, removestops=removestops, mode=mode,**kwargs)
  seglist = jieba.cut(value, cut_all=True)
  for w in seglist:
    t.original = t.text = w
    t.boost = 1.0
    if positions:
      t.pos = start_pos + value.find(w)
    if chars:
      t.startchar = start_char + value.find(w)
      t.endchar = start_char + value.find(w) + len(w)
      yield t


def ChineseAnalyzer():
  return ChineseTokenizer()

3.替换分词器

cp whoosh_backend.py whoosh_cn_backend.py
vim whoosh_cn_backend.py
# 导入ChineseAnalyzer,并将原有的StemmingAnalyser替换为ChineseAnalyzer
from .ChineseAnalyzer import ChineseAnalyzer
# from whoosh.analysis import StemmingAnalyzer

vim替换命令: %s/StemmingAnalyzer/ChineseAnalyzer/g

4.修改setting.py文件

# 全文搜索框架配置
HAYSTACK_CONNECTIONS = {
  'default': {
   # 使用whoosh引擎
   # 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
   # 使用jieba分词
    'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine',
   # 索引文件路径
    'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
  },
}

5.重新建立索引

python manage.py rebuild_index

  可以看到,已经使用了jieba分词。

Django实现whoosh搜索引擎使用jieba分词

到此这篇关于Django实现whoosh搜索引擎使用jieba分词的文章就介绍到这了,更多相关Django jieba分词内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python计数排序和基数排序算法实例
Apr 25 Python
Python入门篇之文件
Oct 20 Python
Python实现的批量下载RFC文档
Mar 10 Python
pycharm 配置远程解释器的方法
Oct 28 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
Python制作动态字符图的实例
Jan 27 Python
python学生管理系统开发
Jan 30 Python
Python按钮的响应事件详解
Mar 04 Python
python学生管理系统学习笔记
Mar 19 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 #Python
python上传时包含boundary时的解决方法
Apr 08 #Python
python MultipartEncoder传输zip文件实例
Apr 07 #Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 #Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 #Python
Django Xadmin多对多字段过滤实例
Apr 07 #Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 #Python
You might like
php分页函数完整实例代码
2014/09/22 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
vue-router的两种模式的区别
2019/05/30 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
python3使用matplotlib绘制条形图
2020/03/25 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
2014新年寄语
2014/01/20 职场文书
个人求职信范例
2014/01/29 职场文书
六一儿童节主持词
2014/03/21 职场文书
被委托人身份证明
2015/08/07 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python