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中if __name__ == "__main__"详细解释
Oct 21 Python
Python解析树及树的遍历
Feb 03 Python
python实现决策树分类算法
Dec 21 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
python计算n的阶乘的方法代码
Oct 25 Python
django admin 添加自定义链接方式
Mar 11 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
python Matplotlib模块的使用
Sep 16 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 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获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
js中开关变量使用实例
2017/02/24 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python函数装饰器实现方法详解
2018/12/22 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
Django models filter筛选条件详解
2020/03/16 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
python空元组在all中返回结果详解
2020/12/15 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
节约能源标语
2014/06/17 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
敬老院活动感想
2015/08/07 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis