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中变量交换的例子
Aug 25 Python
Python中的with...as用法介绍
May 28 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
python去除拼音声调字母,替换为字母的方法
Nov 28 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
Python中包的用法及安装
Feb 11 Python
python实现飞机大战项目
Mar 11 Python
python 中关于pycharm选择运行环境的问题
Oct 31 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基础之运算符的使用方法
2013/04/28 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
python 不以科学计数法输出的方法
2018/07/16 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
python3调用windows dos命令的例子
2019/08/14 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
会计专业应届生求职信
2013/11/24 职场文书
个人简历中自我评价
2014/02/11 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
优质服务活动实施方案
2014/05/02 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python