Django项目配置多个Haystack全文检索系统与模板

关于Haystack和whoosh以及jieba的配置就不赘述了,本文介绍的是whoosh搜索引擎。

在原有一个haystack全文检索的基础之上,开始配置第二个,琢磨了一下午。

先把相应的配置文件都复制一份

到settings文件里修改索引路径

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'essay.whoosh_cn_backend.WhooshEngine',
        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
        'EXCLUDED_INDEXES': ['video.search_indexes.VideoIndex'],
    },
    'video_search': {
        'ENGINE': 'video.whoosh_cn_backend.WhooshEngine',
        'PATH': os.path.join(BASE_DIR, 'whoosh_index_1'),
        'EXCLUDED_INDEXES': ['essay.search_indexes.EssayIndex'],
    },
}

修改search_indexes.py
原本的'essay' app使用的是默认的:‘default’,所以需要修改一下‘video’ app 里的search_indexes.py文件,不然查询的时候也会通过‘default’来调用查找

接下来修改haystack\urls.py

# encoding: utf-8

from __future__ import absolute_import, division, print_function, unicode_literals

from django.conf.urls import url

from haystack.views import *

urlpatterns = [
    url(r'^$', SearchView(), name='haystack_search'),
    #添加一行路径
    url(r'^video/$', VideoSearchView(), name='haystack_search_1'),
]

再修改haystack\views.py

把SearchView类里的get_results方法修改一下(原理就是在迭代的时候判断一下模型的类型并保存返回)

    def get_results(self):
        res_list = []
        for search_obj in self.form.search():
            if search_obj.model_name == 'essay':
                res_list.append(search_obj)
        return res_list
        """
        Fetches the results via the form.

        Returns an empty list if there's no query to search with.
        """
        # return self.form.search()

再把VideoSearchView类修改一下

修改VideoSearchView的__init__方法

 同样地把VideoSearchView类里的get_results方法修改一下

    def get_results(self):
        res_list = []
        for search_obj in self.form.search():
            if search_obj.model_name == 'video':
                res_list.append(search_obj)
        return res_list
        """
        Fetches the results via the form.

        Returns an empty list if there's no query to search with.
        """
        # return self.form.search()

 最后再把html里的路径写正确就行了


参考文章:

https://blog.csdn.net/qq_35526165/article/details/99330699

https://blog.csdn.net/weixin_44735134/article/details/93210499

https://blog.csdn.net/weixin_39990025/article/details/82810349

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值