设为首页 收藏本站
查看: 1395|回复: 0

[经验分享] solr初印象 转载自《闵晓荣(jarorwar)的博客》

[复制链接]

尚未签到

发表于 2015-7-18 10:03:07 | 显示全部楼层 |阅读模式
  声明:以下为转载的文章,非我的原创,看着好收藏之。
  实际的文章出版链接如下

  reference:
http://www.jarorwar.com/?p=18



  以下是转载的全文

  
  闵晓荣(jarorwar)的博客
行到水穷处,坐看云起时
     Solr初印象

  作者: minxr 日期:2011 年 9 月 8 日 发表评论 (0) 查看评论      最近在优化公司的网站搜索程序!之前的程序是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分



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87895-1-1.html 上篇帖子: add more solr core for switch deploy old new replace hot deploy 下篇帖子: Solr入门之(8)中文分词器配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表