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 相关文章推荐
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
python中实现字符串翻转的方法
Jul 11 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
学习python可以干什么
Feb 26 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
Tensorflow 多线程设置方式
Feb 06 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
python实现人工蜂群算法
Sep 18 Python
如何理解及使用Python闭包
Jun 01 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
德生PL330的评价与改造
2021/03/02 无线电
php提示undefined index的几种解决方法
2012/05/21 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP 裁剪图片
2021/03/09 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
Python流程控制 if else实现解析
2019/09/02 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
《骆驼和羊》教学反思
2014/02/27 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA