django haystack一次使用总结

记一次django_haystack的坑使用的是 whoosh 和jieba :pip install whooshpip install jieba首先在django,导入我们的haystack的应用INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib....
摘要由CSDN通过智能技术生成

记一次django_haystack的坑

使用的是 whoosh 和jieba :
pip install whoosh
pip install jieba
首先在django,导入我们的haystack的应用

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index',
    'ranking',
    'user',
    'play',
    'search',
    'comment',
    'captcha',#验证码
   'haystack',#搜锁引擎
]

haystack 配置,在setting中加入如下配置:

#配置haystack
HAYSTACK_CONNECTIONS = {
    'default': {
    # 这里配置搜索引擎 路劲为:项目应用名+whoosh_cn_backend+WhooshEngine
        'ENGINE': 'search.whoosh_cn_backen.WhooshEngine',
        #后面rebuild_index,生成的索引文件目录
        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
        'INCLUDE_SPELLING': True,
    },
}
#设置分页显示的数据量
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 4
#当数据库改变是,自动更新索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

我们搜索应用是search,所以在search路径下,需要创建两个haystack需要文件,search_indexes.py 和whoosh_cn_backend.py
search文件目录
search_indexes.py 代码如下:

from haystack import indexes
from index.models import Song

class ProductIndex(indexes.SearchIndex,indexes.Indexable):
    #,template_name='search/indexes/search/song_text.txt'
    text = indexes.CharField(document=True,use_template=True,template_name='search/indexes/search/song_text.txt')

    def get_model(self):
    	#song可以改成实际的model
        return Song

    def index_queryset(self, using=None):
        return self.get_model().objects.all()

这主要是一个关联操作,定义我们的数据表的model的索引类
text 这个字段是必须的,document=True只能有一个,use_template =true 表示使用模板,这个模板的路径必须按照如下格式: templates/search/indexes/appname/model_text.txt ,如果不按照这个路径的话,就使用template_name 参数,指定模板文件;
第一个坑:当我们模板路径创建错误的时候,修正之后,重新rebuild_index 和update_index都不好使,会一直提示原来错误的模板不存在,这个坑纠结了我一个礼拜,最后,只能指定模板路径的方式,也就是template_name错误信息类似如下:
在这里插入图片描述
模板的内容如下:

{
  { object.song_name }}
{
  { object.song_singer }}
{
  { object.song_album }}

模板的内容就是我们索引所在的表字段,haystack 在这三个字段上建立索引
第二个文件whoosh_cn_backend.py 这个文件可以从我们的haystack的backhend目录下复制,唯一需要修改的就是加入对中文的分词,因为这个默认是不支持中文的,找到下面这句话,按照如下修改下:

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值