杂谈之不同行业的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. eclipse下开发简单的Web Service

    service部分 在eclipse下新建一个动态web项目 在项目中新建一个service类 编写SayHello类的代码 package org.sunny.service; //包不要引用错了 ...

  2. Android自动化测试之monkeyrunner工具

    一.什么是monkeyrunner monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器.通过monkeyrunner,您可以 ...

  3. php 数组排序 (转)

    // @param array $list 查询结果 // @param string $field 排序的字段名 // @param array $sortby 排序类型 // asc正向排序 de ...

  4. masonry使用介绍

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

  5. Android MediaCodec 使用例子

    Android MediaCodec 使用例子 下面的例子是使用MediaCodec 录制到文件的例子. 1 public class AvcEncoder { private MediaCodec ...

  6. GIT学习(二)-->Git分布式的好处

    分布式VS集中式(版本管理系统) 集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器down下最新的版本,然后开始干活,干完活了,再把自己的活推 ...

  7. javascript判断值是否undefined

    function isUndefined(variable) { return typeof variable == 'undefined' ? true : false; }

  8. [转] iOS开发- UICollectionView详解+实例

    本章通过先总体介绍UICollectionView及其常用方法,再结合一个实例,了解如何使用UICollectionView. UICollectionView 和 UICollectionViewC ...

  9. UIWebView(本地数据部分)

    创建UIWebView和UISegmentedControl webView用于显示内容,segmentedControl用于切换读取内容的类型 为了方便起见 用拖拉控件形式布局完界面 /* 使用UI ...

  10. Linux网络配置命令ifconfig输出信息解析

    eth0      Link encap:Ethernet  HWaddr 00:1e:4f:e9:c2:84 inet addr:128.224.163.153  Bcast:128.224.163 ...