Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞
本文介紹了Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞,分享給大家,具體如下:
Django版本:3.0.4
python包準(zhǔn)備:
pip install django-haystack pip install jieba
使用jieba分詞
1.cd到site-packages內(nèi)的haystack包,創(chuàng)建并編輯ChineseAnalyzer.py文件
# (注意:pip安裝的是django-haystack,但是實(shí)際包的文件夾名字為haystack) cd /usr/local/lib/python3.8/site-packages/haystack/backends/ # 創(chuàng)建并編輯ChineseAnalyzer.py文件 vim ChineseAnalyzer.py
2.修改ChineseAnalyzer.py文件內(nèi)容
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
# 導(dǎo)入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
可以看到,已經(jīng)使用了jieba分詞。

到此這篇關(guān)于Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞的文章就介紹到這了,更多相關(guān)Django jieba分詞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python利用flask sqlalchemy實(shí)現(xiàn)分頁效果
這篇文章主要為大家詳細(xì)介紹了利用flask sqlalchemy實(shí)現(xiàn)分頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Python計(jì)數(shù)器collections.Counter用法詳解
本文主要介紹了Python計(jì)數(shù)器collections.Counter用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python實(shí)現(xiàn)可自定義大小的截屏功能
這篇文章主要介紹了Python實(shí)現(xiàn)可自定義大小的截屏功能,結(jié)合實(shí)例形式分析了Python針對指定范圍的截圖、保存等功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01
pycharm使用技巧之自動調(diào)整代碼格式總結(jié)
這篇文章主要給大家介紹了關(guān)于pycharm使用技巧之自動調(diào)整代碼格式總結(jié)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python如何生成指定區(qū)間中的隨機(jī)數(shù)
這篇文章主要介紹了Python如何生成指定區(qū)間中的隨機(jī)數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
Django結(jié)合使用Scrapy爬取數(shù)據(jù)入庫的方法示例
這篇文章主要介紹了Django結(jié)合使用Scrapy爬取數(shù)據(jù)入庫的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

