haystack:全文检索的框架

whoosh:纯Python编写的全文搜索引擎
jieba:一款免费的中文分词包
首先安装这三个包
pip install django-haystack
pip install whoosh
pip install jieba
1.修改settings.py文件,安装应用haystack,
2.在settings.py文件中配置搜索引擎
HAYSTACK_CONNECTIONS = {
'default': {
# 使用whoosh引擎
'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine',
# 索引文件路径
'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
}
}
# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
3. 在templates目录下创建“search/indexes/blog/”目录 采用blog应用名字下面创建一个文件blog_text.txt
#指定索引的属性
{{ object.title }}
{{ object.text}}
{{ object.keywords }}
4.在需要搜索的应用下面创建search_indexes
from haystack import indexes from models import Post #指定对于某个类的某些数据建立索引 class GoodsInfoIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) def get_model(self): return Post #搜索的模型类 def index_queryset(self, using=None): return self.get_model().objects.all()
5.
1. 修改haystack文件
2. 找到虚拟环境py_django下的haystack目录 这个目录根据自己使用的python环境不同,路径也不一样。
3. site-packages/haystack/backends/ 创建一个文件名为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()
6.
1. 复制whoosh_backend.py文件,改为如下名称
whoosh_cn_backend.py
在复制出来的文件中导入中文分词模块
from .ChineseAnalyzer import ChineseAnalyzer
2. 更改词语分析类 改成中文
查找analyzer=StemmingAnalyzer()改为analyzer=ChineseAnalyzer()
7. 最后一步就是建初始化索引数据
python manage.py rebuild_index
8. 创建搜索模板 在templates/indexes/ 创建search.html模板
搜索结果进行分页,视图向模板中传递的上下文如下
query:搜索关键字
page:当前页的page对象
paginator:分页paginator对象
9. 在自己的应用视图中导入模块
from haystack.generic_views import SearchView
定义一个类重写get_context_data 方法,这样就可以往模板中传递自定义的上下文。
class GoodsSearchView(SearchView): def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) context['iscart']=1 context['qwjs']=2 return context
应用的urls文件中添加这条url 将类当一个视图的方法使用 .as_view()
url('^search/$', views.BlogSearchView.as_view())
以上这篇python django使用haystack:全文检索的框架(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# python
# django
# haystack
# Python中使用haystack实现django全文检索搜索引擎功能
# python实现图像检索的三种(直方图/OpenCV/哈希法)
# python检索特定内容的文本文件实例
# Python基于正则表达式实现检查文件内容的方法【文件检索】
# 基于python + django + whoosh + jieba 分词器实现站内检索功能
# 给大家
# 分页
# 创建一个
# 自己的
# 也不
# 这条
# 希望能
# 就可
# 自定义
# 重写
# 搜索结果
# 这篇
# 这三个
# 小编
# 自动生成
# 大家多多
# 搜索关键字
# 以往
# 目录下
# 当前页
相关文章:
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
如何使用Golang table-driven基准测试_多组数据测量函数效率
宝塔建站助手安装配置与建站模板使用全流程解析
制作网站的软件免费下载,免费制作app哪个平台好?
建站VPS选购需注意哪些关键参数?
中山网站制作网页,中山新生登记系统登记流程?
如何快速查询域名建站关键信息?
*服务器网站为何频现安全漏洞?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何在万网自助建站平台快速创建网站?
如何快速重置建站主机并恢复默认配置?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
山东网站制作公司有哪些,山东大源集团官网?
建站之星如何开启自定义404页面避免用户流失?
建站之星如何修改网站生成路径?
建站之星安装需要哪些步骤及注意事项?
如何解决ASP生成WAP建站中文乱码问题?
建站之星ASP如何实现CMS高效搭建与安全管理?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
常州企业建站如何选择最佳模板?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
油猴 教程,油猴搜脚本为什么会网页无法显示?
已有域名如何快速搭建专属网站?
盘锦网站制作公司,盘锦大洼有多少5G网站?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
独立制作一个网站多少钱,建立网站需要花多少钱?
如何快速搭建高效服务器建站系统?
简单实现Android验证码
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
制作网站的基本流程,设计网站的软件是什么?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
宝塔新建站点报错如何解决?
建站之星2.7模板:企业网站建设与h5定制设计专题
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
已有域名和空间如何搭建网站?
安徽网站建设与外贸建站服务专业定制方案
如何选择香港主机高效搭建外贸独立站?
php json中文编码为null的解决办法
子杰智能建站系统|零代码开发与AI生成SEO优化指南
零基础网站服务器架设实战:轻量应用与域名解析配置指南
北京建设网站制作公司,北京古代建筑博物馆预约官网?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
建站之星安装失败:服务器环境不兼容?
javascript基本数据类型及类型检测常用方法小结
建站主机SSH密钥生成步骤及常见问题解答?
建站之星后台密码遗忘如何找回?
,sp开头的版面叫什么?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
Python路径拼接规范_跨平台处理说明【指导】
*请认真填写需求信息,我们会在24小时内与您取得联系。