自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 收藏
  • 关注

原创 solr多组Merge Query原理

概要    Solr和ES搜索引擎都有集群模式,在Solr中可以向任何一个节点发起一个查询,如果查询中没有附带路由router键的话,该节点会扮演Merge的角色向集群中每个share的一个副本发起查询,最终将所有取到的结果排序,返回给客户端。 详细   为了测试需要在测试集群中构建一个Collection,有两个shard(shard中只有一个副本),使用查询Q为:id:99...

2018-07-31 15:44:16 638

Solr分词fieldType分词解析器设置错误导致查询错误

      今天在线上生产环境中碰到一个Solr的查询条件无法匹配到查询结果的问题,问题虽小,但是找到问题的过程确实比较周折,还好最终问题只是一层窗户纸,这里记录以下,以作备忘。       问题是这样的,业务方告诉我有一个查询条件,没有办法匹配到目标记录。查询条件是:name:Y9砵仔糕吕托 收到问题,于是就开始了我的排错之路。        首先,确认了一下name字段原始的文本字段...

2017-04-13 14:19:00 625

Solr PostFilter优化查询性能

背景       实际业务场景中,有时会需要两阶段过滤,最终的搜索结果是在前一个搜索结果上进一步搜索而得到的(search-within-search)的特性。       假设,最终搜索结果集是由(A AND B)两个条件对应的命中结果集求交而得到的。如果A条件对应的文档集合非常小(大概不超过300个),而B条件对应的文档集合非常大。在这样的场景下在solr中使用二阶段过滤的方式来查询...

2017-02-07 14:20:27 643

原创 合理设置Solr Schema防止出现OOM

背景:      晚上收到报警,说线上的一个solr的collection挂掉了,赶紧打开远程服务起查看服务器的状态,果然业务方查询全部超时,增量更新也宕机了,从异常信息上来看是集群中没有可用的节点可以使用,看到这样的问题,第一想到的是要重启一下服务器。悲剧的是重启完服务器,服务只正常了15秒钟,转而又全部宕机。           判断是VM的堆内存溢出了,看了一下虚拟机启动参数...

2016-12-20 08:52:31 903

原创 hive udf 使用示例

 在使用过程中,在执行sql的过程中需要将partition按照一定的规则动态分区:import org.apache.hadoop.hive.ql.exec.UDF;public class SharedRouter extends UDF { private static SolrCloudPainRouter cloudPainRouter; public Strin...

2016-11-30 19:35:53 336

原创 Solr /export 海量数据导出实现

    Solr需要流式导出海量数据,导出数据是基于流式的,当服务端match到第一条数据之后就会向客户端flush出数据。    需要导出的列需要将schema中field元素的docvalue设置为true,并且在solrconfig.xml中配置<requestHandler name="/export" class="solr.SearchHandler"> &l...

2016-11-29 13:18:30 2637

原创 solr5和solr6相同集群共存冲突解决

问题背景          公司内部从2015年9月开始部署了Solr5.3 搜素引擎服务,到今年年初Solr的版本已经发展到了Solr6.x,无奈开源社区的发张的确很快,因为Solr6服务端整合了Facebook的prestodb数据库的Sql解析引擎( http://prestodb-china.com/),可以让Solr6服务端支持简单的sql语句查询,一时间搜索引擎可以支持Sql语...

2016-11-04 12:41:41 331

原创 编写hive udf

我已经编写好了一个根据某列属性hash分区的一个函数,并且已经在日常环境中测试通过用法:hive 启动hive --auxpath /root/standalone/commons-io-2.3.jar,/root/standalone/commons-logging-1.2.jar,/root/standalone/fastjson-1.1.41.jar,/root/standal...

2016-09-21 02:51:43 100

原创 cobar指定从读副本上读数据

  下午花了一点时间看了一下cobar的源代码(无奈cobar的文档写的台稀稀拉拉了,只能看源代码了)在cobar服务端的schema中配置了两个datasource,一主一从,在执行SQL的时候可以通过cobar的Hint语法,在查询的时候指定是从丛库上读取数据(默认是走master库的)详细执行逻辑请查看 com.alibaba.cobar.route.hint.CobarH...

2016-08-26 16:44:53 155

再议浮点数

 背景    事情是这样的,由于业务中需要将几百个浮点数求和,因为以前都会将浮点数的值持久化在数据库中,求Sum这样的操作都是依赖数据库聚合函数Sum,从来都没有考虑过求和之后的值是否会精度损失的问题,也都是正确的。但在这次项目中,需要将这些浮点数持久化在本地文件中,所以数值求和就不能依赖数据库了,只能自己写一个数值累加的函数,本来想这个事儿根本不算个事儿,写个for循环累加分分钟就...

2016-04-04 17:23:20 129

原创 Solr 自定义FieldType Analyzer不生效 问题查找

   最近做得一个项目,需要实现字段的拼音搜索功能,在schema配置了一个fieldtyp,如下: <fieldType name="cn_pinyin" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true" omitNorms="true" o..

2016-03-30 17:22:29 437

Solr DocValues详解

什么是docValues?docValues是一种记录doc字段值的一种形式,在例如在结果排序和统计Facet查询时,需要通过docid取字段值的场景下是非常高效的。为什么要使用docValues?这种形式比老版本中利用fieldCache来实现正排查找更加高效,更加节省内存。倒排索引将字段内存切分成一个term列表,每个term都对应着一个docid列表,这样一种结构使得查...

2016-02-05 13:40:27 397

基于Solr的多表join查询加速方法

前言DT时代对平台或商家来说最有价值的就是数据了,在大数据时代数据呈现出数据量大,数据的维度多的特点,用户会使用多维度随意组合条件快速召回数据。数据处理业务场景需要实时性,需要能够快速精准的获得到需要的数据。之前的通过数据库的方式来处理数据的方式,由于数据库的某些固有特性已经很难满足大数据时代对数据处理的需求。 所以,在大数据时代使用hadoop,hive,spark,作为处理离线...

2016-02-01 17:47:30 1589

原创 linux添加环境变量

linux添加环境变量的办法: 1.  编辑 vi ~/.bash_profile # .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi# User specific environment and startup pro...

2016-01-28 16:40:50 379

原创 logback记日志真的很好使

前言:       使用logback 来记录日志真是一个不错的选择,正像logback官网上介绍的那样:写道Logback is intended as a successor to the popular log4j project, picking up where log4j leaves off.     logback扩展了log4j很多功能,以前一直不明白logb...

2016-01-23 22:36:34 308

原创 Solr facet rage 查询

  需求是在按照某一个时间字段统计在一个时间区间中,以天为单位统计时间单位内的记录条数:  使用的Solr file type是:org.apache.solr.schema.TrieDateField 查询url是:   http://10.1.7.41:8983/solr/search4totalpay_shard1_replica1/select?       f...

2016-01-19 18:44:04 160

原创 Maven war打包时过滤多余文件的办法

使用maven进行WAR打包服务的时候需要将部分多余的项目工程的文件过滤掉可以使用一下办法:<build> <finalName>solr</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</grou...

2015-12-08 14:14:20 910

WeakHashMap使用小计

     在单机版系统中需要实现一个简单的缓存功能(不使用分布式缓存系统),在内存中用一个map来实现就行了,通常的map可用 LinkedHashMap也可以用WeakHashMap 来实现,他们的区别在于淘汰机制上,前者是在构建时设置一个阀值(或者是可以在回收的时候决定那个对象优先被回收),当到了一个阀值之后就会决定老的对象是否要被淘汰。而后者WeakHashMap 是基于虚拟机的垃圾回机制...

2015-12-04 18:17:31 244

原创 集合聚合算法

       有这样一个需求,在做solr索引优化的设计方案中,业务方给出了一个业务场景,相关的业务表有n多张,需要出一个方案来解决数据库上复杂SQL查询导致的高延时问题,另外顺带通过Solr还需要对一些字段做拼音查询。           利用Solr的倒排索引对数据库的复杂查询是非常奏效的,另外,可以在Solr上事先将数据库中的几张业务表打成宽表的方式,进一步提高查询效率。打宽表是...

2015-10-30 16:28:58 670

原创 使用Maven的笔记

█如何做到war包不deploymodule工程下面有一个war包,而在发布module的时候是不需要将war包deploy到maven的仓库中的,所以要在pom的deploy插件中加一个参数,如下:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>m...

2015-04-03 19:44:51 101

原创 使用阿里云ODPS之点滴

    趁着这次做网聚宝搜索服务化这个项目,体验了一下阿里云的重量级云产品ODPS,也就是传说中的云梯2。项目几近结束,现在回过头来看当初选择使用OPDS的决定还是相当正确的,ODPS在网聚宝搜索上云这个项目中起到了非常至关重要的作用,一句话总结:ODPS是非常靠谱的。从刚开始里了解ODPS开始,到引入项目中使用,进而通过优化加速在项目中使用得游刃有余,经历了一个过程,中间也走了不少弯路。在此...

2014-10-07 11:48:13 1194

原创 Groovy动态性在项目中实践

      最近对Groovy语言全面地学习了一下,语言本身因为加入了闭包,自动生成property机制,让其有别于Java,代码本身可以写得比较精简。Groovy具有很多Java所不具备的特性,其中最有意思的特性之一就是动态性。      说到动态语言最长使用的就是Javascript,在代码中可以使用eval函数动态拼接字符串,组装执行函数。      这里我向大家介绍一个在项目中使...

2014-08-02 20:19:16 545

Java版工人-监工模式实现

    之前在学习erlang OTP的时候,看到在OTP中实现了工人-监工模式,就是在定义一个工作者进程的时候,同时为器分配了一个overseer(监工),监工啥事儿也不作,就专门负责工作者进程是否正常工作,有无任务异常情况发生,当时看到在机制觉得不以为然觉得就这么几行代码没什么大不了的。     当我最近用java代码来实现分布式编程的时候发现要做一个稳定的,可靠的系统并不是那么容...

2014-03-12 08:57:41 217

solr通过单个fieldtype在document中创建多个field

           在现有的终搜框架之下如果业务方需要在document文档中设置multivalued的属性,例如淘宝房产有这样的需求,每一个房产小区,都有不同面积的户型,比如有40方、60、90、150方的户型。 在实际使用中查询列表页面会根据户型的大小给所有小区的在售房源分类,比如:会查询有40方房子的小区,或者有60方房子的户型,或者查询有50至100方房源的楼盘。      ...

2014-03-05 11:22:55 285

Solr性能优化之filterCache

什么是filtercache?    solr应用中为了提高查询速度有可以利用几种cache来优化查询速度,分别是fieldValueCache,queryResultCache,documentCache,filtercache,在日常使用中最为立竿见影,最有效的应属filtercache,何谓filtercache?这个需要从一段solr的查询日志开始说起,下面是我截取的solr运行中打...

2013-12-15 14:49:35 456

原创 在本地启动一个EmbeddedSolrServer 用于测试

  import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;import org.apache.solr.client.solrj.response.QueryResponse;import org.apache....

2013-11-01 15:42:44 252

原创 对erlang的怀疑

       任何时候都不能人云亦云,别人说好的东西必须亲自尝试过之后才会有真切的体会。         对于erlang也是如此,因为自己之前一直是用java开发的,所以自觉不自觉得喜欢用java 和erlang来作比较,不比较还好,一比较之后真的会使自己陷入对erlang的怀疑。        测试1:       erlang执行速度和java比较:      测...

2013-08-30 23:05:36 120

erlang读文件的速度为啥这么慢?

        今天公司技术比武,比赛题目是给一个1.1g的大文本,统计文本中词频最高的前十个词。花了两天用erlang写完了代码,但是放到公司16核的机器上这么一跑,结果不比不知道,一比吓一条。erlang写的代码执行时间花了55秒左右,同事们有的用java,有的用C,还有的用C++,用C最快一个老兄只花了2.6秒,用java的也只用了3.2秒。相比之下erlang的代码,真是一头大蜗牛,太慢...

2013-08-21 23:38:08 303

原创 内存缓存与硬盘缓存访问速度的比较

      这两天在为一个应用做solr搜索方案定制的过程中,需要用到solr的fieldcache,在估算fieldcache需要的内存容量,缓存中key是int,value是两个64bit大小的long类型数组,数据量大约是8100w,64×8100w/1024/1024,大致需要10G的容量, 然而服务器总共也只有8G内存,实在无法支持这么大容量的缓存数据。         ...

2013-08-10 12:11:11 2887

原创 spring自定义标签实现 之一对多实体解析

       通过上一篇博客(http://mozhenghua.iteye.com/blog/1830842),我们了解到了如何通过spring来解析如下,只有一个子标签(一对一实体关系)的需求 <tsearcher:parent id="testparent"> <tsearcher:child name="alex" age="12"/&g...

2013-07-28 13:31:24 187

原创 分布式数据库mnesia管理

      经过上两篇博客的学习大伙已经初步了解了mnesia的创建和库内表的创建,已经各种对表的操作。            接下来我们就要了解一下mnesia数据库和其他关系型数据区别最大的特性,就是它的分布式特性。首先需要介绍的是mneisa分布式架构的拓扑图:         通过上图我们可以了解到,先由一个以上的erlang节点组成一个相互之间的对等的master集群...

2013-06-20 00:01:13 360

原创 erlang mnesia 创建表记录

 通过前一篇博已经了解了mnesia数据库如何初始化,如何启动,在这篇博客中你将了解到如何在 mnesia数据库上创建表,并且如何对创建的表进行增删改查操作。   因为创建mnesia数据库过程中需要使用到erlang的record数据结构,所以得先写一个create_tables的模块来封装初始化表的操作,以下是create_tables.erl 的代码: -module(c...

2013-06-12 18:48:06 445

原创 创建Mnesia数据库

最近学习erlang,在erlang中天然集成了一个分布式数据库名字叫mnesia,因为数据库天然就和erlang的元组,记录无缝结合,并且具有良好的分布式特性,能够自动地在几个erlang节点上实现数据复制,效果有点像zookeeper的节点集群,而且mnesia还支持数据库事务特性,所以mnesia在erlang应用中使用得非常频繁。 要在本地创建一个mnesia数据库,并且要实现...

2013-06-12 15:17:25 188

原创 solr cloud 学习

启动solr cloud ,启动到一半发现抛出这样的异常:ZkController.java第1087行代码"Could not find configName for collection " + collection + " found:" + configNames       原因在于solr cloud 集群在启动的过程中需要加载zookeeper中的 collection...

2013-05-12 10:19:02 269

原创 solr cloud 之添加,删除,更新Document

     搭建完成solr cloud的集群之后,接下来的工作就是需要向集群中导入数据,之后可能要更新数据,或者删除数有,假设有有一个服务的schema中的field是这样定义的: <fields> <field name="id" type="string" indexed="true" stored="true" required="tru

2013-05-09 16:01:17 414

原创 mysql fetch size 相关问题

默认情况下,MySQL的JDBC驱动会一下子把所有row都读取下来,这在一般情况下是最优 的,因为可以减少Client-Server的通信开销。但是这样也有一个问题,当数据库查询结 果很大时,特别当不能全部放进内存时,就会产生性能问题。 本来,JDBC api里在Connection、Statement和ResultSet上都有设置fetchSize的方法, 但是MySQL的JDBC驱动都不支持...

2013-05-09 15:42:01 1817

原创 ext3.4 很绚的 消息提示框

 网上找了一个利用Ext3.4中QuickTips来做消息提示,在本地试验了一下,效果还不错,分享给大家<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>test.html</title> &..

2013-04-24 16:25:15 387

原创 FutureTask java

 在java中执行执行多线程工作流,有时候主线程需要拿到子线程的执行结果,而且会需要根据一点的条件终止子线程的执行,这样的需求用 jdk中的futureTask实现比较好,代码如下import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;public class TestFuture...

2013-04-16 12:13:19 112

原创 java 24点算法实现

折腾了一个中午写了一个24点的算法,试验了一下效果还不错,这个算法没有啥技巧也就是把全部的可能性给算一遍,代码如下:/** * @author 百岁(baisui@taobao.com) * @date 2013-3-27 */public class Test24 { /** * @param args */ public static void m...

2013-03-27 13:15:26 495

原创 spring自定义标签实现

  spring中编写配置可以用两种方式: 普通的通过 <bean id="" class=""><property name="" ref=""></bean> 这种默认标签配置方式自定义Bean 配置方式,例如:<?xml version="1.0" encoding="UTF-8

2013-03-17 20:29:42 111

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除