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实现批量监控网站
Sep 09 Python
理解python中生成器用法
Dec 20 Python
Python 实现域名解析为ip的方法
Feb 14 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
django的分页器Paginator 从django中导入类
Jul 25 Python
Python 处理文件的几种方式
Aug 23 Python
Python 如何提高元组的可读性
Aug 26 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 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
77A一级收信机修理记
2021/03/02 无线电
PHP form 表单传参明细研究
2009/07/17 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Python函数参数类型*、**的区别
2015/04/11 Python
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
Python实现模拟时钟代码推荐
2015/11/08 Python
python利用正则表达式提取字符串
2016/12/08 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
浅谈python之新式类
2018/08/12 Python
Python序列类型的打包和解包实例
2019/12/21 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
编辑个人求职信范文
2013/09/21 职场文书
工业学校毕业生自荐书
2014/01/03 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
网站出售协议书范文
2014/10/10 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
2015年度女工工作总结
2015/10/22 职场文书
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang