Django全文搜索

本文介绍了在Python 3.7和Django 3.0.10环境下,结合MySQL 5.7实现Django全文搜索的过程。通过安装相关包,配置settings.py,创建索引文件,使用jieba分词,编辑视图以及前端配置,实现了一个基于jieba的Django全文搜索功能。
摘要由CSDN通过智能技术生成

声明

  • 本文是整理全网的内容,总结出来的一篇个人实践可以实现想要的功能的总结性文章,所以可以在多个地方看到差不多一样的内容,但是,有一些是少了一两个步骤的

实现环境

  • Python 3.7
  • Django 3.0.10
  • MySQL 5.7

准备

  1. 安装需要的包

    pip3 install django-haystack
    pip3 install whoosh
    pip3 install jieba
    
  2. 在setting.py中配置

    #注册app
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        #haystack要放在应用的上面
        'haystack',
        'myapp',  #这个jsapp是自己创建的app
    ]
     #配置haystack
        HAYSTACK_CONNECTIONS = {
         
           'default': {
         
               #指定whoosh引擎
               'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
               #'ENGINE': 'myapp.whoosh_cn_backend.WhooshEngine',      #whoosh_cn_backend是haystack的whoosh_backend.py改名的文件为了使用jieba分词
               #索引文件路径
               'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
           }
       }
    
    #添全文检索框架配置加此项,当数据库改变时,会自动更新索引,非常方便
    HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
    

索引文件生成

  1. 在子应用下创建索引文件

    • 在子应用的目录下,创建一个名为 myapp/search_indexes.py 的文件,并写入
      from haystack import indexes
      from .models import Project
      # 修改此处,类名为模型类的名称+Index,比如模型类为GoodsInfo,则这里类名为GoodsInfoIndex(其实可以随便写)
      class ProjectIndex(indexes.SearchIndex, indexes.Indexable):
          # text为索引字段
          # document = True,这代表haystack和搜索引擎将使用此字段的内容作为索引进行检索
          # use_template=True 指定根据表中的那些字段建立索引文件的说明放在一个文件中
          text = indexes.CharField(document=True, use_template=True)
      
          # 对那张表进行查询
          def get_model(self):  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值