From 5d4dee14be70779f674abbc8a1b972e46788cdc7 Mon Sep 17 00:00:00 2001 From: djq <1092424998@qq.com> Date: Mon, 20 Oct 2025 10:48:22 +0800 Subject: [PATCH] =?UTF-8?q?zjp=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/Django.iml | 6 +----- .idea/misc.xml | 5 ++++- .../DjangoBlog-master/blog/search_indexes.py | 15 ++++++++++++++- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/.idea/Django.iml b/.idea/Django.iml index 8b8c395..f571432 100644 --- a/.idea/Django.iml +++ b/.idea/Django.iml @@ -2,11 +2,7 @@ - + - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 23231ce..db8786c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,7 @@ - + + + \ No newline at end of file diff --git a/src/DjangoBlog-master(1)/DjangoBlog-master/blog/search_indexes.py b/src/DjangoBlog-master(1)/DjangoBlog-master/blog/search_indexes.py index 7f1dfac..8ebb26a 100644 --- a/src/DjangoBlog-master(1)/DjangoBlog-master/blog/search_indexes.py +++ b/src/DjangoBlog-master(1)/DjangoBlog-master/blog/search_indexes.py @@ -1,13 +1,26 @@ +# 从haystack框架导入索引相关的模块,用于实现全文搜索功能 from haystack import indexes +# 导入当前项目中blog应用的Article模型,该模型对应需要被索引的文章数据 from blog.models import Article +# 定义ArticleIndex类,继承自SearchIndex和Indexable,用于配置Article模型的搜索索引 +# SearchIndex:提供索引的核心功能,定义了如何从模型中提取数据构建索引 +# Indexable:标识该类可被索引,要求实现get_model方法来指定关联的模型 class ArticleIndex(indexes.SearchIndex, indexes.Indexable): + # 定义一个text字段作为文档的主要索引字段(document=True表示这是主要搜索字段) + # use_template=True表示使用模板来定义该字段需要索引的内容(通常在templates/search/indexes/blog/article_text.txt中配置) + # 该字段会聚合模型中需要被搜索的字段(如标题、正文等),作为全文搜索的基础 text = indexes.CharField(document=True, use_template=True) + # 实现Indexable接口的方法,返回当前索引关联的模型类 + # 作用:告诉haystack该索引对应的数据来自哪个模型 def get_model(self): return Article + # 定义需要被索引的查询集(即哪些数据会被纳入搜索范围) + # using参数用于指定搜索引擎(多引擎场景下使用),默认None表示使用默认引擎 + # 这里返回状态为'p'(假设表示"已发布")的文章,确保只有已发布的内容可被搜索 def index_queryset(self, using=None): - return self.get_model().objects.filter(status='p') + return self.get_model().objects.filter(status='p') \ No newline at end of file