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 sys.path详细介绍
Oct 17 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
python自定义时钟类、定时任务类
Feb 22 Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Python自动化操作实现图例绘制
Jul 09 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
python try...finally...的实现方法
Nov 25 Python
python基于win32api实现键盘输入
Dec 09 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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生成压缩文件实例
2015/02/07 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
PHP打印输出函数汇总
2016/08/28 PHP
javascript分页代码(当前页码居中)
2012/09/20 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
python创建关联数组(字典)的方法
2015/05/04 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
python super函数使用方法详解
2020/02/14 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
zooplus意大利:在线宠物商店
2019/08/07 全球购物
家长给幼儿园的表扬信
2014/01/09 职场文书
个人实习生的自我评价
2014/02/16 职场文书
公司离职证明标准格式
2014/11/18 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
社会实践活动报告
2015/02/05 职场文书
详解Java实践之适配器模式
2021/06/18 Java/Android
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python