全文检索在Django框架中的使用步骤详解

请根据以下步骤逐步完成

  • 安装相关包
pip install django-haystack
pip install whoosh
  • 在工程的settings.py文件中进行以下操作
  1. 注册检索应用 ’
INSTALLED_APPS = [
		'''''
    'haystack'

]

2.添加haystack配置

HAYSTACK_CONNECTIONS = {
    'default': {
        #使用whoosh引擎
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        #索引文件路径
        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
    }
}
  • 在被检索的应用目录下创建search_indexes.py文件(文件名不可更改)
from haystack import indexes
from booktest.models import GoodsInfo
#指定对于某个模型类的某些数据建立索引
class GoodsInfoIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        return GoodsInfo
#修改成导入要检索的模型类
    def index_queryset(self, using=None):
        return self.get_model().objects.all()
  • 在templates下面新建目录search/indexes/应用名,在这里插入图片描述
    并在创建目录新建一个文件模型类名小写_text.txt并编辑内容如下(object.XXX 对应可以检索的模型类中属性)
    在这里插入图片描述
  • 使用命令生成索引文件
 python manage.py rebuild_index
  • 项目urls.py文件配置url(不可修改)
    在这里插入图片描述
  • 对相应前端代码表单搜索设置如下:-不可更改
    在这里插入图片描述
  • 经过以上操作已经完成了配置,可以正常使用检索,但是如果没有设置搜索后返回的页面则会返回一个空白的地址。故在templates/search目录下创建search.html
    其中搜索后会返回以下上下文
query:搜索关键字
page:当前页的page对象 –>遍历page对象,获取到的是SearchResult类的实例对象,对象的属性object才是模型类的对象。
paginator:分页paginator对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值