全文搜索框架Haystack

Haystack是Django的全文搜索框架,支持多种搜索引擎后端,如Solr、Elasticsearch、Whoosh和Xapian。本文介绍了如何安装、注册、配置搜索引擎、处理数据、创建索引,以及如何结合jieba进行中文分词优化,实现前后端分离的搜索功能。
摘要由CSDN通过智能技术生成

Haystack

Haystack是django的开源全文搜索框架(全文检索不同于特定字段的模糊查询,使用全文检索的效率更高 ),该框架支持SolrElasticsearchWhooshXapian搜索引擎它是一个可插拔的后端(很像Django的数据库层),所以几乎你所有写的代码都可以在不同搜索引擎之间便捷切换

  • 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理
  • haystack:django的一个包,可以方便地对model里面的内容进行索引、搜索,设计为支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎后端,属于一种全文检索的框架
  • whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用
  • jieba:一款免费的中文分词包,如果觉得不好用可以使用一些收费产品

django-haystack的使用

安装

pip install django-haystack # 安装搜索框架
pip install whoosh # 安装whoosh搜索引擎
pip install jieba # 利用jieba实现中文的分词

注册

添加Haystack到INSTALLED_APPS,跟大多数Django的应用一样,首先要在设置文件(通常是settings.py)添加Haystack到INSTALLED_APPS. 示例:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    # 注册haystack
    'haystack',
    # 注册项目中的应用
    'blog',
]

配置搜索引擎

settings.py中,添加一个 HAYSTACK——CONNECTIONS设置来指示使用的搜索引擎。并且应该至少是以下的一种:

Solr示例
HAYSTACK_CONNECTIONS = {
   
    'default': {
   
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr'
        # 或者
        # 'URL': 'http://127.0.0.1:8983/solr/mysite',
    },
}
Elasticsearch示例
HAYSTACK_CONNECTIONS = {
   
    'default': {
   
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack',
    },
}
Whoosh示例
#需要设置PATH到你的Whoosh索引的文件系统位置
HAYSTACK_CONNECTIONS = {
   
    'default': {
   
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'),
    },
}

# 自动更新索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
Xapian示例
#首先安装Xapian后端(http://github.com/notanumber/xapian-haystack/tree/master)
#需要设置PATH到你的Xapian索引的文件系统位置。
HAYSTACK_CONNECTIONS = {
   
    'default': {
   
        'ENGINE': 'xapian_backend.XapianEngine',
        'PATH': os.path.join(os.path.dirname(__file__), 'xapian_index'),
    },
}

处理数据

创建索引

如果你想针对某个app例如blog做全文检索

首先创建对应的模型表 models.py

class Article(models.Model):
    title 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值