一、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的示例,更多强大的功能建议查看官方文档学习。
领取专属 10元无门槛券
私享最新 技术干货