Django-haystack全文检索:haystack+whoosh+jieba返回接口格式内容

Django Haystack 简介

django-haystack 是一个专门提供搜索功能的 django 第三方应用,它支持 Solr、Elasticsearch、Whoosh、Xapian 等多种搜索引擎,配合中文自然语言处理库 jieba实现中文分词

这里以一个商城商品搜索接口为例!

为什么要返回接口格式

用于实现前后端分离
前后端分离是一种架构模式,说通俗点就是后端项目里面看不到页面(JSP|HTML),后端给前端提供接口,前端调用后端提供的REST风格接口就行,前端专注写页面(html|jsp)和渲染(JS|CSS|各种前端框架);后端专注写代码就行。前后端分离的核心:后台提供数据,前端负责显示

安装环境

pip install django-haystack
pip install whoosh
pip install jieba

配置Haystack

# settings.py
INSTAKKED_APPS = [
	...
	'haystack'#注册haystack
]
...
HAYSTACK_CONNECTIONS = {
   
   
    'default': {
   
   
    	#ENGINE指定了 django haystack 使用的搜索引擎
        'ENGINE': 'shop.whoosh_cn_backend.WhooshEngine',#shopAPP下编写whoosh_cn_backend.py文件 后面会说
        #后面rebuild_index,生成的索引文件目录
        'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'),
    }
}

# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
# haystack自动分页默认每页显示20个  可以根据自己的需求设置显示个数
HAYSTACK_SEARCH_RESULTS_PER_PAGE  =  20

创建app

>>python manage.py startapp shop

编写models文件

class Category(models.Model):
    """商品分类"""
    name = models.CharField(max_length=20, verbose_name='分类名称')
    desc = models.CharField(max_length=50, verbose_name='分类描述')
    parent = models.ForeignKey('self', default=0, null=True, blank=True, related_name='children', verbose_name='上级分类',
                               limit_choices_to={
   
   'is_abort': False, 'is_root': True}, on_delete=models.CASCADE)
    is_root = models.BooleanField(default=0, verbose_name='是否是一级分类')
    is_abort = models.BooleanField(default=False, verbose_name='是否删除')

    def __str__(self):
        return self.name

class CategoryImage(models.Model):
    """分类图片"""
    name = models.CharField(max_length
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值