Django项目:极致果蔬(五)

根据上篇所学的内容,在“极致果蔬”项目中添加全文检索的功能。搜索功能分为两部分:一是用户输入后下拉显示提示商品信息;二是用户点击搜索后会跳到搜索结果页面。

1.安装 python 全文索引包

pip install django-haystack==2.7.0 -i https://pypi.tuna.tsinghua.edu.cn/simple 
pip install whoosh -i https://pypi.tuna.tsinghua.edu.cn/simple 
pip install jieba

2.全文检索配置

   在 settings.py 文件中注册 haystack 应用并配置;

INSTALLED_APPS = [
    ...
    'haystack',
    ...
]

# 全文检索框架
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine',
        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
    },
}

# 自动更新索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

3.建立索引

   在 goods 应用下新建生成索引的文件 search_indexes.py (名字固定不能改);

from haystack import indexes
from .models import GoodsSKUBean

class GoodsSKUBeanIndex(indexes.SearchIndex,indexes.Indexable):
    # 类名必须为需要检索的Model_name+Index,这里需要检索Article,所以创建ArticleIndex
    # document=True以为这个text是一个索引字段
    # 在goods的应用中,只能索引goods的内容
    # use_template根据哪些字段建立索引,将说明放入一个文件中
    text = indexes.CharField(document=True,use_template=True)  # 创建一个text字段
    sale_count = indexes.CharField(model_attr='sale_count')  # 创建一个排序字段

    def get_model(self):   # 重载 get_model 方法,必须要有!
        return GoodsSKUBean

    # 建立索引的数据
    def index_queryset(self, using=None):
        return self.get_model().objects.all()

   在目录“templates/search/indexes/goods”下创建 goodsskubean_text.txt 文件;

{
  { object.name }}
{
  { object.description }}

   运行:python manage.py rebuild_index 生成索引文件(每修改一次索引内容需要生成一次),在项目目录中会出现如下文件;

                              

4.使用索引

   在 goods 应用下的 urls.py 中添加路径,搜索结果交给 haystack.urls 对应的视图处理;

    url(r'^search/',include('hayst
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值