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 08 Python
Python中处理时间的几种方法小结
Apr 09 Python
Python批量转换文件编码格式
May 17 Python
Python中使用ElementTree解析XML示例
Jun 02 Python
Python基础中所出现的异常报错总结
Nov 19 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
python模仿网页版微信发送消息功能
Feb 24 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
Django跨域请求CSRF的方法示例
Nov 11 Python
pygame实现成语填空游戏
Oct 29 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
python和JavaScript哪个容易上手
Jun 23 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实现将GB编码转换为UTF8
2006/11/25 PHP
wordpress之wp-settings.php
2007/08/17 PHP
深入PHP许愿墙模块功能分析
2013/06/25 PHP
php绘制一个矩形的方法
2015/01/24 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
php生成HTML文件的类方法
2019/10/11 PHP
认识延迟时间为0的setTimeout
2008/05/16 Javascript
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
python判断windows隐藏文件的方法
2014/03/21 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
Python实现简单多线程任务队列
2016/02/27 Python
Python2随机数列生成器简单实例
2017/09/04 Python
python3中rank函数的用法
2019/11/27 Python
Python3 集合set入门基础
2020/02/10 Python
python 绘制场景热力图的示例
2020/09/23 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
python函数超时自动退出的实操方法
2020/12/28 Python
Python页面加载的等待方式总结
2021/02/28 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
公务员职务工作的自我评价
2013/11/01 职场文书
怎样写留学自荐信
2013/11/11 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
行政主管职责范本
2014/03/07 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
自我推荐信怎么写
2015/03/24 职场文书
i7 6700处理器相当于i5几代
2022/04/19 数码科技