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虚拟环境Virtualenv使用教程
May 18 Python
利用python实现数据分析
Jan 11 Python
Python实现的爬虫功能代码
Jun 24 Python
python实现简易云音乐播放器
Jan 04 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
基于Python List的赋值方法
Jun 23 Python
python遍历文件夹找出文件夹后缀为py的文件方法
Oct 21 Python
PyTorch的torch.cat用法
Jun 28 Python
python中@property的作用和getter setter的解释
Dec 22 Python
Python jieba库分词模式实例用法
Jan 13 Python
用 Python 元类的特性实现 ORM 框架
May 19 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
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
php微信开发之关注事件
2018/06/14 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
详解Django框架中的视图级缓存
2015/07/23 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
python的sorted用法详解
2019/06/25 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
对python中return与yield的区别详解
2020/03/12 Python
python实现在线翻译
2020/06/18 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
建筑设计所实习生自我鉴定
2013/09/25 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
师德学习感言
2014/01/31 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
周一问候语大全
2015/11/10 职场文书
创业计划书之家教托管
2019/09/25 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript