使用pysolr库操作solr(二 打造属于自己的搜索引擎)
来源:互联网 发布:易语言模块转源码 编辑:程序博客网 时间:2024/06/08 07:41
之前有文章讲了基础的如何使用pysolr1操作solr,以及如何使用haystack编写属于自己的搜索引擎,但是呢,老大来了命令,现在是2017年了,咱们不用solr 3那种老版本,就用solr5吧!嘤嘤,也就是说不能直接用haystack框架,要自己写一个了。于是乎,搞事开始。
1.环境版本
Django:1.8 (可直接使用pip,指定版本)
pysolr:3.6.0 (可直接使用pip,指定版本)
solr:5.4.0
2.编写调用solr的代码
solr = pysolr.Solr('your solr core address', timeout=10)def search_solr_data(q): if q==None: results = solr.search("*:*") else: results = solr.search("*:%s"%q) number = results.hits page = int(math.ceil(number/10.0)) page_content = { 'pageContent': results, 'page': page } return page_content#由于solr是分页传回的,因此需要统计总条数,从而形成总页码数def get_total_number(): total = solr.search("*:*") number = total.hits return number#为了以后实现数据切片,还是单独拿出来好勒def page_solr_data(q,page_no): results = solr.search("*:%s" % q,**{"start":(int(page_no)-1)*10}) number = results.hits page = int(math.ceil(number/10.0)) page_content = { 'pageContent': results, 'page': page } return page_content
3.编写查询视图
这里直接用了render_to_response实现了跳页,是不是hin方便?
def index(request): errors = [] total = get_total_number() if 'q' in request.GET: q = request.GET['q'] if not q: errors.append('请输入关键词') else: if 'page' in request.GET: page_no = request.GET.get('page') results = page_solr_data(q, page_no) else: results = search_solr_data(q) context = { 'results':results, 'paginator': range(1,results['page']+1), 'query':q } return render_to_response('search_result.html', context) return render_to_response('search.html', {'total':total,'errors': errors})
最后的最后就是编写前端啦,本人的前端代码写的太丑就不误人子弟了,借鉴的百度学术的搜索界面,而且还有一个分页框的问题没有解决。下面是目前的效果图,比haystack的自带view还是好看点~:
虽然代码写的有点丑,但是好歹是自己探索所写,希望对研究这个同道有所帮助吧。
0 0
- 使用pysolr库操作solr(二 打造属于自己的搜索引擎)
- 使用pysolr库操作solr(一)
- 使用ViewDragHelper打造属于自己的DragLayout(抽屉开关 )
- 使用ViewDragHelper打造属于自己的DragwLayout(抽屉开关 )
- 使用FontCreator打造属于自己的字体
- 打造属于自己的图文符号库
- 打造属于自己的智能家居(一)
- 打造属于自己的进度条(笔记)
- Android打造属于自己的数据库操作类。
- 打造属于自己的 gVim !
- 打造属于自己的Notepad++
- 打造属于自己的uboot
- 打造属于自己的Vim
- 打造属于自己的RxBus
- 打造属于自己的RxBus
- 打造属于自己的RxBus
- 打造属于自己的vim
- android 教您打造属于自己的注解(@interface) 优雅与便捷并行(二)
- 《Objective-C编程全解》 读书笔记 第十三章 对象的复制及存储
- web.xml文件详解
- HDU1285-确定比赛名次
- Java快速排序
- activemq使用logback作为日志问题解决
- 使用pysolr库操作solr(二 打造属于自己的搜索引擎)
- 学习笔记—scala高级编程
- 一张图看懂TranslationX,Y和X,Y的区别
- 安卓集成腾讯bugly里的热更新
- 《Objective-C编程全解》 读书笔记 第十四章 块对象
- mysql乐观锁总结和实践
- flume之Http Source
- MATLAB图像处理第二节
- Solr.NET快速入门(九)【二进制文档上传】【完】