背景:

     最近开发一个大型的仓储管理平台项目,项目的前身是无数个版本的历史悠久的基于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. OCR图像识别技术-Asprise OCR

    // csc AspriseDemo.cs /r:AspriseOcr.dll // 注意注册:AspriseOCR.InputLicense("123456", "12 ...

  2. C#TreeView控件遍历文件夹下所有子文件夹以及文件

    一直对递归的理解不深刻,有时候觉得很简单,可是用起来总会出错.这里需要在TreeView控件里显示一个文件夹下的所有目录以及文件,毫无意外的需要用到递归. 一开始,想到用递归写一个生成每一个节点(Tr ...

  3. qt之mapx组件编程c2248和c2512错误

    mapx组件利用qt工具dumpcpp到处头文件和.cpp文件后将其加入到新建的qt项目中即可. 不过本人遇到问题知道今天偶然的解决了.记下来,以免忘记. demo的项目结构如下: 然后在.pro文件 ...

  4. JAVA Socket 编程学习笔记(一)

    1. Socket 通信简介及模型 Java Socket 可实现客户端--服务器间的双向实时通信.java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的cli ...

  5. HTML解析原理

    Web页面运行在各种各样的浏览器当中,浏览器载入.渲染页面的速度直接影响着用户体验 简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程.先来大致了解一下浏览器都 ...

  6. 《Unix/Linux网络日志分析与流量监控》获2015年度最受读者喜爱的IT图书奖

    <Unix/Linux网络日志分析与流量监控>获2015年度最受读者喜爱的IT图书奖.刊登在<中华读书报>( 2015年01月28日 19 版) 我的2015年新作刊登在< ...

  7. 监控数据库运行 - MS SQL 日常维护管理常用脚本(二)

    查看数据库登录名信息 use mastergoSELECT name AS LoginName , dbname AS DefaultDB , createdate AS CreateDate, up ...

  8. VS2013配置WTL91_5321_Final

    网上关于WTL的文章,尤其是中文的文章不多,根据收集的资料整理出了VS2013安装WTL的方法. .下载.文件很小的,地址:http://sourceforge.net/projects/wtl/fi ...

  9. 登陆判读,并跳转到指定页面(window.location.href='http://localhost/index.html')

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 functio ...

  10. Java开发环境配置

    JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装:双击exe文件一直下一步就Ok了. 环境变 ...