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 09 Python
Python 描述符(Descriptor)入门
Nov 20 Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 Python
pandas通过loc生成新的列方法
Nov 28 Python
python制作简单五子棋游戏
Jun 18 Python
python pandas时序处理相关功能详解
Jul 03 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
python编程的核心知识点总结
Feb 08 Python
python中如何对多变量连续赋值
Jun 03 Python
python画条形图的具体代码
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生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
js常用排序实现代码
2010/12/28 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
对python判断ip是否可达的实例详解
2019/01/31 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
Python中base64与xml取值结合问题
2019/12/22 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
单位创先争优活动方案
2014/01/26 职场文书
法律进企业活动方案
2014/03/04 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
逃课检讨书范文
2015/05/06 职场文书
体育委员竞选稿
2015/11/21 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
HTML基本元素标签介绍
2022/02/28 HTML / CSS
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js
python和anaconda的区别
2022/05/06 Python