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 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
python线程、进程和协程详解
Jul 19 Python
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
Python使用正则表达式获取网页中所需要的信息
Jan 29 Python
python实现将汉字保存成文本的方法
Nov 16 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
python实现统计文本中单词出现的频率详解
May 20 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
使用python从三个角度解决josephus问题的方法
Mar 27 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
详解Python常用的魔法方法
Jun 03 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
详细解析Python当中的数据类型和变量
2015/04/25 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
"火柴棍式"程序员面试题
2014/03/16 面试题
params有什么用
2016/03/01 面试题
公务员政审个人鉴定
2014/02/25 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
个人工作表现评价材料
2014/09/21 职场文书
人力资源部岗位职责
2015/02/11 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python