搜索插件(django-haystack)
搜索
搜索可以使用最原始的 like 的方式进行搜索。当然这种搜索方式对于一些少量的数据是非常合适的。但是随着数量越来越大。这时候我们就需要使用搜索引擎了。搜索引擎会将所有需要的数据使用算法做一个索引,以后的时候就需要根据这个索引即可找到相应的数据。索引引擎做索引的过程会比较慢,但是一旦索引建立完成,那么以后在搜索的时候就会很快了。
django-haystack 插件
这个插件是专门给 django 提供搜索功能的。 django-haystack 提供了一个搜索的接口,底层可以根据自己需求更换搜索引擎。它其实有点类似于 django 中的 ORM 插件,提供l了一个操作数据库接口,但是底层具体使用哪个数据库是可以自己设置的。安装方式非常简单,通过 pip install django-paystakc 即可安装。
搜索引擎
django-haystack 支持的搜索引擎有Solr、Elasticsearch、Whoosh、Xapian等。 Whoosh 是基于纯 Python 的搜索引擎,检索速度快,集成方便。这里我们就选择 Whoosh 来作为 haystack 的搜索引擎。安装方式同样也是通过 pip 安装的:pip install whoosh
集成步骤
1 在项目中安装 django-haystack
2 设置搜索引擎
在 setting 中添加以下配置
# 搜索配置
HAYSTACK_CONNECTIONS = {'default': {# 设置haystack的搜索对象'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',# 设置索引文件的位置'PATH': os.path.join(BASE_DIR, 'whoosh_index'),}
}
3 创建索引类
在模型所属的 app 下创建一个 search_index.py 文件,然后创建索引类。比如要给 News 创建索引,代码如下:
from haystack import indexes
from .models import News
class NewsIndex(indexes.SearchIndex, indexes.Indexable):text = indexes.CharField(document=True, use_template=True)# 给哪个模型服务def get_model(self):return News# 返回模型的值def index_queryset(self, using=None):return self.get_model().objects.all()
4 添加url 映射
在住 url.py 中,添加以下代码:
5 添加模板
在 template 文件夹下创建以下结构的目录:
template -- search -- indexes -- news(app的名字) -- news(app的名字)_text.txt
news_text.txt 文件中添加需要被索引的字段,示例代码如下:
{{ object.title }}
{{ object.content }}
接着在 template 文件夹下创建 search.html 模板文件, haystack 会自动的在 template 文件夹寻找这个模板文件渲染,并且会给这个模板文件传入 page、paginator、query 等参数。其中 page 和paginator 分别s是 django 内置的 page 类和 paginator 类的对象,query 是查询的关键字。我们可以通过 page.object_list 获取到查找出来的数据。示例代码如下:
转载于:https://www.cnblogs.com/renshaoqi/p/10836707.html
搜索插件(django-haystack)相关推荐
- Django开发个人博客网站——19、通过Django Haystack实现搜索功能(上)
该博客最开始采用的模板是并不包括搜索功能的,在主页只有主页.归档和分类三个部分.最后博主自己添加了搜索框,不过其实不太想让大家使用这个功能,因此将搜索框隐藏了,只有再点击搜索时,才会显现出来.但是这个 ...
- django搜索 关键字 全文检索haystack 搜索分词数据库
Django Haystack 简介 django-haystack 是一个专门提供搜索功能的 django 第三方应用,它支持 Solr.Elasticsearch.Whoosh.Xapian 等多 ...
- Diango博客--22.Django Haystack 全文检索与关键词高亮
文章目录 1. Django Haystack 简介 2. 安装 django-haystack和elasticsearch 2 3. 构建容器来运行 elasticsearch 服务 4. 配置 H ...
- 33.搜索插件——autocomplete
搜索插件的功能是通过插件的autocomplete()方法与文本框相绑定,当文本框输入字符时,绑定后的插件将返回与字符相近的字符串提示选择,调用格式如下: $(textbox).autocomplet ...
- idea无法搜索插件问题解决
idea无法搜索插件问题解决 参考文章: (1)idea无法搜索插件问题解决 (2)https://www.cnblogs.com/jisusukaifa/p/11225728.html 备忘一下.
- NET插件系统之四——提升系统搜索插件和启动速度的思考
一. 面临的问题 开发插件系统的主要优势是扩展性,我们不需要为系统模块的集成再多费脑筋,但这也带来了额外的问题.通常,系统需要在每次启动时搜索固定目录下的符合要求的插件.但是,当系统变得越来越庞大,所 ...
- php 搜索名称或者编号,ECSHOP商品关键词模糊分词搜索插件,商品列表关键字加红功能-ecshop插件网...
最近给客户做一个ECSHOP商城,发现ECSHOP的模糊搜索要求太高,需要加入and.空格.加号等,客户搜索的时候不可能这样操作. 考虑到工期的问题,采用了织梦的分词算法,搜索效果虽然不是特别理想,但 ...
- 搜索插件像百度那样的智能感知效果
题记:写这篇博客要主是加深自己对搜索插件的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. <link href="css/jquery.autocomplete.c ...
- python 全文检索 whoosh flask_基于whoosh的flask全文搜索插件flask-msearch
flask 的全文搜索插件很少,有个Flask-WhooshAlchemy,最近发现个flask-msearch,使用了下感觉不错. 安装flask-msearch pip install flask ...
最新文章
- Go 1.12发布:改进了运行时性能以及模块支持
- 洞悉物联网发展1000问之从精益管理到互联工业带来的启示是什么?
- pmp学习资料_南昌如何选择PMP报考条件-海外人才交流协会
- C++:搭建深度学习环境及实战
- ubuntu php 中文乱码,Ubuntu环境下,图例中文乱码怎么办?
- 7天4场直播,涵盖DBA职业发展必备软实力、Oracle和MySQL技术等
- Cannot assign to read only property 'exports' of object '#Object'
- html5通讯录源码,通讯录web版
- kali扫描内网ip_kali 局域网嗅探
- 中职学计算机专业考本科难吗,国际本科难不难(中职考本科难不难)
- 界面怎么随意设计java,怎么样设计一个图形用户界面(普通登陆框)用java语言中的swing...
- ssms mysql_SQL Server Management Studio(SSMS)复制数据库的方法
- 安装Ubuntu的几十次坑的经验
- Spring,SpringMVC,Mybatis(第二节)
- 二叉树中序遍历的非递归算法
- Google全系列产品不再信任赛门铁克某款根证书-转载
- 哟西,张家界三日自助游走起@-@
- VINS-mono 学习之 三角化
- 蓝桥杯python组练题第二天——成绩统计——蓝桥杯官网题库
- 郑州钢丝网骨架塑料复合管应用领域
热门文章
- kubernetes组件
- 登陆窗体显示动态效果
- mysql导出excel命令,在命令行导出MySQL数据到excel表
- linux filesystem_如何使用cgdb + qemu调试linux内核模块
- 修改js文件需要重启服务器,关于Node.js中频繁修改代码重启服务器的问题
- 交叉线和直通线各自用于什么场合?为什么?_都是软电线,BVR与RV有什么不一样?...
- oracle设置表字段小写,将oracle中的字段和表名全部修改为小写
- python运行mcmc为何老出错_python – 使用pyMCMC / pyMC对数据/观察结果设置非线性函数...
- cin输入字符串怎么结束_翻遍全网,只为让你记住这些输入输出函数
- java 集合快速排序_搞定Java快速排序