1、什么是haystack?

    1. haystack是django的开源搜索框架,该框架支持Solr,Elasticsearch,Whoosh, *Xapian*搜索引擎,不用更改代码,直接切换引擎,减少代码量。

    2. 搜索引擎使用Whoosh,这是一个由纯Python实现的全文搜索引擎,没有二进制文件等,比较小巧,配置比较简单,当然性能自然略低。

    3. 中文分词Jieba,由于Whoosh自带的是英文分词,对中文的分词支持不是太好,故用jieba替换whoosh的分词组件。

  2、什么是jieba?

    1、很多的搜索引擎对中的支持不友好,jieba作为一个中文分词器就是加强对中文的检索功能

  3、Whoosh是什么?

    1、Python的全文搜索库,Whoosh是索引文本及搜索文本的类和函数库

    2、Whoosh 自带的是英文分词,对中文分词支持不太好,使用 jieba 替换 whoosh 的分词组件。

 

haystack配置使用(前后端分离)

安装工具

pip install django-haystack==2.8.1
pip install whoosh==2.7.4
pip install jieba==0.42.1

  在setting.py中配置

全文检索django-haystack+jieba+whoosh
'''注册app '''
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # haystack要放在应用的上面
    'haystack',
    'jsapp',  # 这个jsapp是自己创建的app
]


''' 模板路径 '''
TEMPLATES = [
    {
        'DIRS': [os.path.join(BASE_DIR,'templates')],

    },
]


'''配置haystack '''
# 全文检索框架配置
HAYSTACK_CONNECTIONS = {
    'default': {
        # 指定whoosh引擎
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        # 'ENGINE': 'jsapp.whoosh_cn_backend.WhooshEngine',      # whoosh_cn_backend是haystack的whoosh_backend.py改名的文件为了使用jieba分词
        # 索引文件路径
        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
    }
}
# 添加此项,当数据库改变时,会自动更新索引,非常方便
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
setting.py

相关文章: