全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python django使用haystack:全文检索的框架(实例讲解)

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小时内与您取得联系。