首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

每日一模块:Haystack

一、Haystack

它是django的一个包,可以方便地对model里面的内容进行索引、搜索,设计为支持whoosh,solr,Xapian,Elasticsearc四种全文检索引擎后端,属于一种全文检索的框架.全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。

• 依赖

1. Python3.8+

2. Django3-5

• 注 本文主要以Elasticsearch部署在windows上演示,请参Elasticsearch考官方文档自行安装。

二、安装

pip install "django-haystack[elasticsearch]"三、创建django项目

切换到预创建工程的目录下,通过django命令创建一个项目,在命令行执行如下命令

django-admin startproject searchStack

• 注 如果没有安装django,先安装pip install django

四、创建一个应用

在工程根目录,与manage.py文件同级,执行命令

python manage.py startapp aiSearch五、配置

在django的settings.py文件进行一些配置

1. 添加应用

2. 添加搜索引擎配置

• 注 如果没有安装Elasticsearch,只是想看看Haystack的能力,开发环境可以部署一个Haystack提供的默认引擎,不建议生产使用,因为很多功能无法使用

3. 创建搜索索引SearchIndex

SearchIndex 对象是 Haystack 确定应将哪些数据放入搜索索引并处理数据流的方式。你可以把它们看作是类似于Django模型或表单的,因为它们是基于字段的,并且操作/存储数据。通常,您可以为希望编制索引的每种类型的模型创建一个唯一的 SearchIndex,但如果您注意这样做并且您的字段名称非常标准化,则可以在不同模型之间重复使用相同的 SearchIndex。要构建 SearchIndex,只需对这两个索引进行子类化即可。SearchIndex 和索引。可索引,定义要用于存储数据的字段,并定义get_model方法。

我们将创建以下 NoteIndex 以对应于我们的 Note 模型。此代码通常位于其适用的应用程序内的search_indexes.py文件中,尽管这不是必需的。这使得 Haystack 可以自动拾取它。NoteIndex 应如下所示:

每个 SearchIndex 都要求有一个(且只有一个)字段具有 document=True。这向 Haystack 和搜索引擎表明哪个字段是搜索的主要字段。

4. 添加Haystack路由

5. 编写模板文件

六、数据库初始化

1. django默认数据表初始化

python manage.py migrate

2. 创建应用表

python manage.py makemigrations aiSearch七、启动服务

python manage.py runserver

这是一个入门使用Haystack的示例,更多强大的功能建议查看官方文档学习。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ObwA1gsz1aLrIiGuiyymLm3g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券