NINE——Django项目之新闻搜索功能实现(搜索功能分析;全文搜索引擎elasticsearch介绍;docker介绍及安装
from haystack import indexes
from .models import News
# 定义一个索引类
class NewsIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
# 指定模型
def get_model(self):
return News
# 为搜索索引提供数据
def index_queryset(self, using=None):
return self.get_model().objects.all()
# 在模板中定义搜索字段
# news_text.txt 文件内容可能如下:
# {{ object.title }}
# {{ object.content }}
这段代码定义了一个简单的搜索索引类NewsIndex
,它将News
模型中的title
和content
字段用于全文搜索。text
字段被标记为文档字段,表示它是用于搜索的全文字段,并且使用了模板来指定使用title
和content
字段的内容作为索引文本。index_queryset
方法指定了应该索引News
模型的所有实例。在实际使用时,还需要在Django的模板系统中定义news_text.txt
模板,并在该模板中指定如何提取News
对象的title
和content
字段用于搜索。
评论已关闭