背景:

     最近开发一个大型的仓储管理平台项目,项目的前身是无数个版本的历史悠久的基于CS模式的Windows桌面程序。然后对于每一个客户,我们可能需要为之定制比较个性化的特殊功能。于是,有一个核心研发团队,以一两年为周期开发一个核心功能版本的软件;然后拿出去推广销售,每每销售成功,做售前的同事都是拿了一大堆定制化的需求回来的;然后一场在核心功能上的定制和个性化扩展就开始了,完成开发就可以去客户现场实施了;最后,就会有部分维护的同事将这个客户的系统纳入他们的日常工作清单中。周而复始。诚然,这种方式在大多数软件公司都能看到,但是我公司是一个有想法的公司,怎么可能让这样的套路进行到底呢!?
     这里把关于为什么要做平台的描述省略,总之就是要做平台了,搞SaaS了,不买软件卖账号了。但是这个时候产生了一个关乎用户体验的事情:从前使用CS程序,在每个客户端缓存了大量数据(通常有数G),所以客户对于信息的检索非常的快速;如果换成BS架构,咱可没地方存那么大量的数据,而且通过SaaS的方式会把所有客户的数据都存放在平台端,事情发展到这里,好像项目的失败已经注定。
     就在大家焦头烂额,苦闷不堪的时候,我们发现了一种已经在江湖上良好发展的技术:搜索引擎。虽然没用过,但是听过嘛!于是一段围绕着搜索引擎的工作便就此展开。
 

搜索引擎:

     维基百科给出了这样的定义:搜索引擎指自动从因特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。
 

工作原理:

     1、搜集信息:搜索引擎的信息搜集基本都是自动的。搜索引擎利用称为网络蜘蛛的自动搜索机器人程序来连上每一个网页上的超鏈接。机器人程序根据网页链到其中的超链接,就象日常生活中所说的“一传十,十传百”一样,从少数几个网页开始,连到数据库上所有到其他网页的链接。理论上,若网页上有适当的超链接,机器人便可以遍历绝大部分网页。
     2、整理信息:搜索引擎整理信息的过程称为“建立索引”。搜索引擎不仅要保存搜集起来的信息,还要将它们按照一定的规则进行编排。这样,搜索引擎根本不用重新翻查它所有保存的信息而迅速找到所要的资料。想象一下,如果信息是不按任何规则地随意堆放在搜索引擎的数据库中,那么它每次找资料都得把整个资料库完全翻查一遍,如此一来再快的计算机系统也没有用。
     3、接受查询:用户向搜索引擎发出查询,搜索引擎接受查询并向用户返回资料。搜索引擎每时每刻都要接到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的资料,并返回给用户。目前,搜索引擎返回主要是以网页链接的形式提供的,这样通过这些链接,用户便能到达含有自己所需资料的网页。通常搜索引擎会在这些链接下提供一小段来自这些网页的摘要信息以帮助用户判断此网页是否含有自己需要的内容。
 

正确的方向:

     通过背景和搜索引擎的原理描述,初步可以判断,方向是正确的。
     第一、搜集信息。我们的信息来自于仓储管理平台的日常业务,这些数据本身便存储在平台的数据库,搜索引擎要做的搜集信息,应该是能够想办法把业务系统中的数据搜集过来。无论方法采用主动还是被动,总之信息是要搜集的,只不过范围由整个互联网变成了我们自建的平台。
     第二、整理信息。平台的数据存储是遵循RMDBS的,形式上有其固有特点,是否利于检索,至少在开始正儿八经做搜索的时候是有待商榷的。在这个假定的基础上,我们一定需要对搜索引擎搜集到的信息进行编排和整理的。
     第三、接受查询。毫无疑问,这是我们最终的目标,也是用户能够感受到的唯一功能---查询,而且是高效的查询。
 

怎么选?

     随着互联网技术的发展。开源的搜索引擎实在数不胜数,诸如Lucene、Sphinx、Xapian、Nutch、Datapark Search、Zettair、Indri、Terrier、Galago、Zebra、Solr、ElasticSearch、Whoosh等。我们选择的范围也基本确定在这里面。结合公司实际情况附加如下原则:
     1、应用广泛(别人把坑踩得差不多了)
     2、易于使用(节省学习时间和成本)
     3、社区活跃(不用担心过几天它从江湖上消失)
     4、技术跨度不大(降低学习成本)
     综上、最后初步选定了Solr作为项目的第一候选方案。主要因为,它建立在Lucene之上;基于全文索引;提供RESTful API;使用门槛并不高;已经在市场上有广泛的应用。
 

愿景:

     在开始了解Solr方面的资料的时候,查了很多网站但是中文信息很少,而且大多是讲解如何安装入门的,实际用处并不大。我希望能结合我项目的实际使用,把这次经历记录下来,同时尽可能丰富中文关于中文方面的资料。后面的分享会围绕Apache Solr 6.3开始。

01 Apache Solr:提升检索体验 为什么是Solr的更多相关文章

  1. Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..

    Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...

  2. paip.提升用户体验--radio图片选择器 easyui 实现..

    #paip.提升用户体验--radio图片选择器 easyui 实现.. =================================== ##原因... ------------------- ...

  3. paip.提升用户体验--提升java的热部署热更新能力

    paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力  "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...

  4. .net中运用solr提升搜索效率(入门)

    概述: 在开发网站的时候经常有要对某些内容查询的需求.此时如果基于数据库查询来做搜索功能,由于要对多个字段做模糊匹配,效率往往非常糟糕.这种情况就可以用Solr来提升搜索的效率.Solr是一个独立的企 ...

  5. paip.提升用户体验----gcc c++ JIT-debugging 技术

    paip.提升用户体验----gcc  c++ JIT-debugging 技术 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http ...

  6. paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置..

    paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置.. 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址: ...

  7. paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt

    paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http:// ...

  8. paip.提升用户体验---论文本编辑器的色彩方案

    paip.提升用户体验---论文本编辑器的色彩方案 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.ne ...

  9. paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制

    源地址:http://blog.csdn.net/attilax/article/details/12343625 paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制 效果图: ...

随机推荐

  1. MSSQL PIVOT 实现行列转置

    create table #temp ( ProdStep varchar(40), ModuleStatus varchar(40), Cnt int ); insert into #temp va ...

  2. 批量删除wps文档里的回车符的方法!WPS使用技巧分享!

    有时候整理文档的时候,如果是从网上复制的文字,可能会因为复制而产生很多的回车符.怎样能批量去掉这些个回车符呢,下面马上告诉你批量删除wps文档里的回车符的方法!WPS使用技巧分享! 想要批量删除批量删 ...

  3. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  4. 正则表达式test验证的“bug”

    在使用正则表达式对某些字符串进行验证时,我们常常会使用到test方法,而该方法也隐藏着一个陷阱,今天就让我们来看一下这个问题. var str = 'hello jack, hello rose'; ...

  5. linux 下 TeXmacs 作 Mathematica 10 的前端

    TeXmacs可以作很多种数学软件的前端,比如maxima,octave,R等.甚至还可以作mathematica的前端.TeXmacs的mathematica 插件比较老,默认条件下无法运行math ...

  6. MySQL索引原理及慢查询优化(转)

    add by zhj:这是美团点评技术团队的一篇文章,讲的挺不错的. 原文:http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能.低廉的成本.丰 ...

  7. 移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法

    这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来. 做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且to ...

  8. 40、dom以xml结尾的文件

    1.student.xml文件 <?xml version="1.0" encoding="utf-8" ?> <!-- 1.书写根元素(因为 ...

  9. Ios学习之容器的理解

    UInavgationController 和 UITabbarController 都是容器 1:uinavigationcontroller (导航控制器) uinavigationcontrol ...

  10. 我读汤姆大叔的深入理解js(一)

    前言 闲来看看javascript,在圆子里发现了汤姆大叔的文章,先是整体瞄了几眼,感觉不错,然后细细研读.记录下自己的学习历程和个人理解.更重要的是作为笔记 高质量JS代码 在看汤姆大叔的这一系列文 ...