背景:

     最近开发一个大型的仓储管理平台项目,项目的前身是无数个版本的历史悠久的基于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. java.io.file

    package cn.edu.tongji.cims.wade.system;     import java.io.*;     public class FileOperate {     pub ...

  2. css狂记

    接着上一篇 html狂记,同样是DIV+CSS传统站点开发,同样只是收集.整理... CSS 背景属性(Background) 属性 描述 CSS background 在一个声明中设置所有的背景属性 ...

  3. URL特殊字符的转义

    + 转义符为 %2B 空格 转义符为 + 或 %20 / 转义符为 %2F ? 转义符为 %3F % 转义符为 %25 # 转义符为 %23 & 转义符为 %26 = 转义符为 %3D

  4. jquery 上传回显图片预览

    /******************************************************************************* * 异步上传文件,兼容IE8,火狐和谷 ...

  5. AngularJS-chapter2-7-前端路由

    Form表单提交会导致页面之间的切换,没法实现单页应用 Ajax请求不会留下History记录(在后台管理系统,没有后台历史记录还可以) ,但在网络型应用或门户型应用(用户没有办法给改页面加标签或分享 ...

  6. 入门React和Webpack

    最近在学习React.js,之前都是直接用最原生的方式去写React代码,发现组织起来特别麻烦,之前听人说用Webpack组织React组件得心应手,就花了点时间学习了一下,收获颇丰 说说React ...

  7. java学习第16天(补充可变参数)

    如果我们在写方法的时候,参数个数不明确,就应该定义可变参数. 格式: 修饰符 返回值类型 方法名(数据类型... 变量) {} 注意: A:该变量其实是一个数组名 B:如果一个方法有多个参数,并且有可 ...

  8. Word设置首页不同

    Sub 批量格式设置()  '此代码为指定文件夹中所有选取的WORD文件的进行格式设置 Dim MyDialog As FileDialog, vrtSelectedItem As Variant, ...

  9. sql server2008安装说明 详细完整版

    SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本. 在现今数据的世界里,公司要获得成功和不断发展,他们 ...

  10. NodeJs 连接mysql一例。

    var mysql = require('mysql'); var connection = mysql.createConnection({ host :'127.0.0.1', user :'ro ...