1. 安装Django项目下使用的django-haystack包, 以及搜索引擎whoosh包
pip install django-haystack pip install whoosh
2. Django项目文件中, settings添加haystack配置
# 全文检索框架的配置(haystack) HAYSTACK_CONNECTIONS = { ‘default‘: { # 选择引擎(haystock包内的backend后端文件夹选中whoosh的相关配置文件的Engine函数) ‘ENGINE‘: ‘haystack.backends.whoosh_backend.WhooshEngine‘, # 索引文件放置路径 ‘PATH‘: os.path.join(BASE_DIR, ‘whoosh_index‘), } } # 设置即时生成索引(haystock包下,signal(标识)索引文件生成时间为,即时生成) HAYSTACK_SIGNAL_PROCESSOR = ‘haystack.signals.RealtimeSignalProcessor‘
3. 应用下创建.py文件, 名称为search_indexes.py
# 引入haystack模块中的indexes函数 from haystack import indexes # 引入需要建立索引的模型类 from goods.models import GoodsSKU # 指定对于 具体类 下的 具体属性 建立索引 # 通常索引类名格式: 模型类名 + Index class GoodsSKUIndex(indexes.SearchIndex, indexes.Indexable): ‘‘‘索引类, 继承与indexes的SearchIndex和Indexable类‘‘‘ # 定义text值 # 其中,索引字段 use_template=True, 使用模板文件配置.(从固定路径调用模板文件) text = indexes.CharField(document=True,use_template=True) # 获取模型类 def get_model(self): # 返回模型类 return GoodsSKU # 获得所需要建立索引的数据 def index_queryset(self, using=None): return self.get_model().object.all() # 查询该模型类下所有数据
4. 配置需要索引的模型类, 以及相关索引内容
新建目录和文件,固定路径为:
项目根目录/templates/search/indexes/应用名/模型类名(全小写)_text.txt
例, 项目文件为project, 应用名application, 模型类名为DataInfo, 则创建模板txt文件路径为
project/templates/search/indexes/application/datainfo_text.txt
并在该文件键入 模型类内需要建立索引的属性:
{{ object.属性名 }} {{ object.外键.属性名 }} 例: {{ object.name }} {{ object.detail }} {{ object.foreign.name }} {{ object.foreign.detail }}
5. 生成索引
运行django项目管理manage.py
python manage.py rebuild_index
y确定即可
原文地址:https://www.cnblogs.com/jrri/p/11594907.html
时间: 2024-10-05 05:50:08