solr初印象 转载自《闵晓荣(jarorwar)的博客》
声明:以下为转载的文章,非我的原创,看着好收藏之。
实际的文章出版链接如下
reference:
以下是转载的全文
闵晓荣(jarorwar)的博客
行到水穷处,坐看云起时
Solr初印象
最近在优化公司的网站搜索程序!之前的程序是hibernate search写的,Hibernate Search是基于lucene,经Hibernate包装而成!用Hibernate Search 你既有用Hibernate的感觉,又可以来添加Lucene的强大功能!使用Hibernate Search的另一个优点是,如果你使用的Hibernate进行持久化操作,那么索引几乎是实时进行建立的。这个无比的爽啊!(当然抛出数据库了,就直 接用lucene了。)
但是,我们现在的程序对库的操作是用dephil端操作的,所以用hibernatesearch并没有解决更新即建索引的问题,建立索引还是需要自己定时增量去建的!
现有的操作是:spring定时任务每半个小时调用增量索引的建立过程,在建立索引的过程中,对已经建立的数据进行了记录,作为日志写入到数据库。 下次从数据库中读取建立索引的位置,建立增量索引。每天晚上凌晨建立一次全量索引(建立索引的过称中清空日志表重新进行记录!)。
现有的程序并没有什么不妥,现在看起来,也并没有无可厚非之处(个人观点,如果大家有更好的建议,请留言讨论)。但是搜索效果,索引的实时性,以及搜索的效果,对顾客的引导性等方面也存在很多问题。所以需要对程序进行优化。
优化之前进行了很多选择,从zoie的实时索引,到bobo-browse的分类搜索。再到最后选择的solr。对这三者进行简单的分析吧。纯属个人见解,不正确支出请大家指出:
1、zoie:zoie是linkedin公司开发的一个实时的索引系统,其原理主要是多线程对索引的实时建立和合并。达到了所谓真正的实时索引!linkedin公司一直也在使用此程序。还是很不错的。
但是zoie的学习曲线比较大,作者去了个貌似中文的名字,但是没有任何的中文文档,甚至连英文文档也非常至少!另外需要自己实现的地方比较多,如果不是非常了解其内部结构,实现起来有一定的难度!所以,笔者在学习了一段时间后,暂时性的放弃了!
2、bobo-browse:是一个用来进行搜索的程序包,其封装了lucene的搜索api,加入了facet实现了分类统计,分段搜索等功能。 其可以结合zoie或者solr等进行使用!是搜索层面非常不错的工具选择!bobo-browse的实现相对来说比较完善了,只要经过简单的配置即可使 用。同样,其文档相对较少。好在源代码比较少,如果真有兴趣,可以好好研究一番源代码。
3、solr:其实在研究solr前,翻阅过好多资料。一个搜索程序重要的无非有三点:
A、索引。如果没有索引,那么你搜什么,所以索引非常重要!这就表现在索引的实时性,分词算法、索引 域(field)的设计等。要使用将索引真正的研究透,最好达到,你看到一个词,就知道他会被索引成什么样,搜什么和什么会出现此匹配项,搜什么不会出 现。当然这个有点夸张,但是我的建议是,我们最好能一边看着索引结果,一边来构建我们的程序。查看索引结果的最好工具就是luke了。
B、搜索。出了索引之外,那么搜索就是非常重要的一个环节,一个索引无论建立的多好,但是搜索程序没有 设计好,就是怎么也搜不出来,好比茶壶里煮饺子。故而搜索程序异常的重要。好的搜索好比好的语言组织能力,而索引就是词汇,只有将这些词汇进行合适的组织 之后,才会形成优美的文章、诗词。
C、界面。好多人看到此处不禁纳闷,既然索引、搜索都做到完美了。那么界面真的有这么重要么?答案只有一个:非 常重要!这里所说的界面的重要性,不是说我们要界面ui做的多么的花哨,多么的漂亮。这里主要是指界面的内容,以及不同内容的显示区域,要尽量的简洁明 了。让用户第一眼就能找到他想要的东西,而不是让用户猜测你会把这个东西放在那里,另外ui的设计一定要考虑受众的习惯。
综合以上三点,选择了solr,solr在索引方面可以做到准实时,另外,solr支持分布式的部署,可以部署两台,一台提供索引服务,一台提供搜 索服务。同时solr的索引建立也异常的方便,不管是对数据库还是对文本文件,抑或对网站站点建立索引。其次,solr的搜索程序也非常的友好,通过 http协议加参数,您就可以获取您想要的结果。结果可以被以不同的形式返回(json ,xml等).方便了我们在前台的处理。最后就是我要讲的最重要的界面了,solr自带的demo程序中的browse界面就是一个典型的范例,如果有对 搜索程序界面该如何设计有疑问的话,建议参考或者模仿此界面做一下。因为本人觉得确实不错。包括那个基于jquery的自动提示功能,都是非常好的范例。
最后还有一点重要的忘了讲了,solr的后台程序”solr/admin”提供了非常好的工具,可以进行搜索,进行分词的查看等。是一个不错的管理端。另外solr可以灵活的配置分词程序,不同的field可以完全采用不同的分词器,方面了我们的个性化需求。
最令人兴奋的是solr的wiki写的非常好,如果你耐心去“啃”,一定会“嚼”出味道和营养来!
总之,solr就是个万花筒,如果你尽情的研究,他就会尽情的绽放,你少许的付出,他就会加倍的回报,不会让你失望!如果你发现solr并不能完全满足你,那么你可以自己开发代码来帮助你完成工作。基于solr的开发也是非常容易上手的。
最后告诉大家一个小秘密,因为solr是基于http协议进行数据交互的,索引无论什么语言,都可以使用solr并且将solr融合到自己的程序中哦。
最近研究solr的简单总结————————————————————–闵晓荣 2011-09-08晚 23:45分
转载于:https://www.cnblogs.com/lexus/archive/2011/09/22/2185116.html
solr初印象 转载自《闵晓荣(jarorwar)的博客》相关推荐
- [转载]一篇经典的求职经历博客,值得深入研究和学习
一篇经典的求职经历博客,值得深入研究和学习,感谢原创作者分享! 工作刚刚落实,论文也刚完成,终于有时间对自己的求职历程及求职经验进行总结了.应同学要求,最近准备书写系列文章"我的求职历程及经 ...
- 转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程
使用vue全家桶制作博客网站 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vu ...
- (转载)云计算系统测试_manok_新浪博客
云计算系统测试 转载于:http://www.51cto.com/art/201110/295530.htm 云计算系统中大量融入了面向服务的体系结构,用户可以通过该体系结构来实施.部署.执行和管理自 ...
- 转载自一个很佩服的大牛博客:孤傲苍狼
如何在涉世之初少走弯路,有一个好的开端,开始一番成功的事业?以下是一些先行者积累的10条有益的涉世忠告.好好地遵循.把握这些忠告和建议吧,比起所学的课堂课程来,它毫不逊色! 1.1.买个闹钟,以便按时 ...
- java 正则表达式 (本文系转载,百度了一下,没找到原博客,或者作者,找了一篇2008年的贴过来了╮(╯▽╰)╭)
参考文章地址: 一 JAVA 正则表达式 (超详细) http://blog.csdn.net/allwefantasy/article/details/3136570/ (强烈推荐,有 ...
- User Profile Service 服务未能登录转载自(sailing的新浪博客)
"事件查看器"的"应用程序"一栏中找到大量来源为"Winlogon"和"User Profile Service"的错误 ...
- 注意力机制--转载自我的学生隆兴写的博客
原文链接为:https://a-egoist.com/posts/a44b8419/,学生自己搭建的博客,点赞! 1 Attention 1.1 什么是 Attention 灵长类动物的视觉系统中的视 ...
- [转载]荷香如歌_xing2516_新浪博客
原文地址:荷香如歌作者:松阳中山 荷香如歌 在炎炎的盛夏,我游览了世界上现存最大的古典皇家园林----承德避暑山庄.驻足于风景如画的"知鱼矶"旁,穿过那飘渺如幻的"烟雨楼 ...
- 模电学习心得(转载)_史蒂文森sun_新浪博客
个人建议:认真分析几个典型电路,主要掌握晶体管的等效模型,以及在电路中怎么等效.其他的都很容易解决了.只要会等效了,模电就是完全是电路的内容.其实一点都不可怕,开始不要太关注乱七八糟的内容,抓住主要的 ...
最新文章
- iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信
- ob_get_contents();basename;file_get_contents用法
- 小龙多功能工具箱,邮件群发微信多开
- HttpComponents之httpclient基本使用方法
- OpenCV 直方图均衡化 equalizeHist
- MySQL半一致性读导致语句级Binlog复制错误1111
- 【QT】Qaction和触发函数建立连接的方法
- [BZOJ1009]GT考试
- gopython 获取python 全局线程锁失败_Python之路(第四十三篇)线程的生命周期、全局解释器锁...
- HDU1010【走迷宫】Tempter of the Bone-------2015年1月26日
- html作业本,连作业本都不用买了!Word做作业本竟这么简单
- 全能模拟器retroarch+android,全能模拟器 RetroArch Android
- mysql临键锁_innodb临键锁锁定范围
- linux查看hostid,lmhostid获取hostid为空问题
- python——方便数的据存储模式Bunch
- style是什么意思
- 一次培训机构的面试经历
- 计算机系统的cpu数量,设置cpu核心数量方法,电脑降低cpu处理器数量和内存大小图文教程...
- 用Windows7玩游戏?小心你的存档!
- 敏捷实施步骤与价值观