杂谈之不同行业的Solr

前几天去一家互联网创业公司面试搜索引擎开发工程师,结果被pass了,仍不住想来吐槽下。尽管当时面试没啥准备,也没表现好,但是也学到了不少东西。现在就随便吐槽一下吧。

本人是在安防公司做大数据搜索引擎,搞Solr也一年多点了,自认为对Solr了解的也不少了,但是为什么在面试中碰壁呢,回想一下面试的情节,主要觉得跟行业不同造成对Solr的使用方式不同。

  • 首先,我们公司使用的Solr是对应交通行业的大数据,交通行业的数据有个显著的特点就是:

1. 域多,存在几十个域;

2. 域短,每个域的长度很短,比如车牌,车身颜色,车牌颜色,车速,等等跟车有关的数据,这些数据要么是数字类型,要么就是几个字符的字符串

3. 数据量,一个城市的过车量有多少,基本上能达到每秒几千条记录。

  • 基于以上这个数据特点,所以我们的Solr使用跟互联网这种全文检索形式的使用方式会由很多区别:

1. 首先,我们公司是卖服务器的或者说是卖软件的,而互联网公司是卖服务的。这样的差别就是,互联网公司觉得性能不行,那他自己加一台服务器,增加   solrcloud的shard,就可以解决性能问题了。而我们呢?卖一台服务器就已经很难了,客户怎么会轻易要两台呢?所以我们不能通过增加服务器,增加shard的方式来优化性能,我们只能往死里的优化Solr/Lucene。在搞Solr这一年,改动过好多Solr/Lucene的源码。面试的那位仁兄甚至问我,你们一台服务器跑几个java进程,我说好几个,他诧异的看着我说我们只有一个。尼玛,太幸福了。

2. 我们的数据虽然域短,但是数据量大啊,也就是document多。一台服务器我们就要存放10亿的数据量,有时甚至达到20亿。尼玛,20亿的数据互联网公 司是不是已经N多台构成Solrcloud了?我甚至直接把Solr的一个core的document弄到撑爆过,document是int型,也就是单台服务器单个core的最大 document是int型的上限,也就是21亿,我就搞到过21亿,那个时候甚至动了改这个类型的想法。所以一比较就觉得互联网公司是高富帅,俺们就是屌丝。我们的集群规模是多少?10台一百亿啊。

3. 查询吧也是有很大区别的,我们的域段,所以我们什么乱七八糟的查询方式都没用,啥米PharseQuery,RangeQuery,还有什么编辑距离查询,近似查 询,本人使用的Solr只有一个Boolean查询,顶多外加一个模糊查询。简简单单,清清楚楚,多好。

4. 查询性能,有人或许会问,一台服务器单个core10亿的数据量是不是会很慢,本人很自豪的会告诉他,不慢,经过一年的优化只要1秒左右。但是那位面试 的哥哥告诉我他们的查询只要几十毫秒,我瞬间被打击了。如果10亿数据用十几二十台集群,我也可以达到几十毫秒的。

5. 索引性能,单台10亿的数据对索引的建立以及合并是个很大的挑战,这个一直都是本人最头大的地方,也一直都在努力优化,不想说了。

最后,有句话说的是“隔行如隔山”,虽然同样用的是Solr,但是安防行业与互联网行业对他的使用是完全的两个方向。这次面试让我明白了以前我一直忽视的Solr的一些其他特性以及基础知识,评分机制,缓存机制,查询组件,查询方式,分词等等一些,接下来的日子继续勤练内功。

杂谈之不同行业的Solr的更多相关文章

  1. 后端技术杂谈4:Elasticsearch与solr入门实践

    阮一峰:全文搜索引擎 Elasticsearch 入门教程 作者:阮一峰 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://g ...

  2. Solr实战:使用Hue+Solr实现标签查询

    公司最近在研究多条件组合查询方案,Google的一位技术专家Sam和我们讨论了几个备选方案. Sam的信: 我做了进一步研究,目前有这么几种做法: 1) 最直接粗暴,只做一个主index,比如按行业+ ...

  3. 【管理心得之三十二】PMP杂谈---------爱情必胜术

    这次一反常态,没有场景设计,我想借此文普及一下PMP是什么? 但我不知道这样枯燥的话题能否能引起你的兴趣,我不得不套用“标题党”<爱情必胜术>来博你眼球. 我真没有说谎,此文是献给那些孤身 ...

  4. solr与.net系列课程(五)solrnet的使用

     solr与.net系列课程(五)solrnet的使用 最近因项目比较忙,所以这篇文章出的比较晚,离上一篇文章已经有半个月的时间了,这节课我们来学下一下solr的.net客户端solrnet 出处   ...

  5. 通信行业OSS支撑系统软件研发思考

    一般的,对所谓大型.通信行业.OSS支撑软件系统,我们可宏观定义以下几点: 以年计的研发周期 以几十人计的研发团队 以百计的业务菜单功能点 以千计的数据库表 以万计的业务术语指标 以亿计的数据表记录 ...

  6. 杂谈之SolrCloud这个坑货

    杂谈之SolrCloud这个坑货 看<Solr In Action>时候看到对Solr不足的介绍有这么一段话:“One final limitation of Solr worth men ...

  7. iOS APP安全杂谈

      iOS APP安全杂谈 高小厨 · 2015/06/30 10:16 0x00 序 以前总是在这里看到各位大牛分享其安全渗透经验,而今我也很荣幸的收到了乌云的约稿,兴奋之情难以言表.由于IOS是一 ...

  8. WPF 杂谈——开篇简言。

    这俩年多来笔者一直在从事关于WPF的开发.虽然不能说是专家级别的.但是对于WPF的应用还是有一定的了解.论他的灵活性决对不在WinForm之下.WPF的出现更是引发一段热议.他的何去何从更是让很多人感 ...

  9. 全文搜索引擎 ElasticSearch 还是 Solr?

    最近项目组安排了一个任务,项目中用到了全文搜索,基于全文搜索 Solr,但是该 Solr 搜索云项目不稳定,经常查询不出来数据,需要手动全量同步,而且是其他团队在维护,依赖性太强,导致 Solr 服务 ...

随机推荐

  1. 怎么调试EXC_BAD_ACCESS错误

    当你遇到了一个EXC_BAD_ACCESS错误,我通常会给开发者几个建议: 1.在可执行选项中设置NSZombieEnabled参数,这有时会帮缩小问题的范围: 2.运行apple的内存检测工具,如  ...

  2. JAR WAR EAR包的区别

    jar包和war包的区别: war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块.而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令 ...

  3. Quartz的cronTrigger表达式

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.CronTr ...

  4. 【转】AngularJs $location获取url参数

    // 带#号的url,看?号的url,见下面 url = http://qiaole.sinaapp.com?#name=cccccc $location.absUrl(); // http://qi ...

  5. JSP中的路径

    我的原则 所有路径一律使用绝对路径,就是以"/"开头的或者带host的路径.形如: /imgs/1.jpg <%= request.getContextPath()%> ...

  6. cgdb调试postgresql

    之前一直用gdb调试代码,最近在搞pg的时候用了一个cgdb,体验很好,调试pg代码的时候真的很方便. 本文主要讲解在进行pg内核开发的时候,如何搭建一个环境,用cgdb方便快捷的调试postgres ...

  7. 把安卓源代码中的system app独立出来,像开发普通app那样开发

          个人建议首先依照android源码的ide/eclipse中的格式化xml和import导入到你编译的eclipse中,假设你编译的android源码是2.3以上的版本号的,建议用JDK6 ...

  8. masonry使用介绍

    Masonry使用介绍 下面是Masonry的代码地址:https://github.com/Masonry/Masonry 介绍一个简单使用: <pre><code>[vie ...

  9. android strings.xml转义字符, 注意细节解决(转)

    XML转义字符 以下为XML标志符的数字和字符串转义符 "     (" 或 ") '     (' 或 &apos;) &     (& 或 & ...

  10. Strust2 <c:forEach> 循环控制标签

    <c:forEach>为循环控制标签 语法:迭代一集合对象中的所有成员 <c:forEach [var="varName"] items="collec ...