zoukankan      html  css  js  c++  java
  • 全文检索框架Haystack,与 Whoosh搜索引擎的配置

    Haystack和Whoosh环境配置


    1. 安装Django项目下使用的django-haystack包, 以及搜索引擎whoosh包

    pip install django-haystack
    pip install whoosh
    

      

    # 安装django-haystack时要求django框架为较新版, 会自动更新Django框架. 应注意Django框架版本, 如对版本有要求, 应安装对应的django-haystack包.

    # 如安装后运行项目出现错误代码:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required;

    请参照: Django2.X 与 pymysql兼容


    2. Django项目文件中, settings添加haystack配置,注册haystack应用

    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
      ...
        '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确定即可

    ###############################################
    关于django.settings中,haystack设置项:

    # 数据发生更改的时候自动重新生成索引

    HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
    

      



    # 设置返回的分页内每页的项目个数.

    HAYSTACK_SEARCH_RESULTS_PER_PAGE = 5
    

      

  • 相关阅读:
    一篇进入ABB机器人世界-以前学习视频的笔记
    说说常用算子select_shape的特性一些使用
    简单说说双目立体视觉的原理(后面有机会再讲讲应用)
    Halcon算子大全目录
    【转载】C# SQLite 数据库操作
    【重磅】机器视觉前沿的研究机构(国内篇)
    【重磅】机器视觉前沿的研究机构(国外篇)
    机器视觉相关中英文词汇
    Java中print、printf、println的区别
    iTerm2相关设置与美化
  • 原文地址:https://www.cnblogs.com/jrri/p/11594907.html
Copyright © 2011-2022 走看看