全文检索框架Haystack,与 Whoosh搜索引擎的搭配以及相关配置


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确定即可

猜你喜欢

转载自www.cnblogs.com/jrri/p/11594907.html
今日推荐