`
mozhenghua
  • 浏览: 318861 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
前言 DT时代对平台或商家来说最有价值的就是数据了,在大数据时代数据呈现出数据量大,数据的维度多的特点,用户会使用多维度随意组合条件快速召回数据。数据处理业务场景需要实时性,需要能够快速精准的获得到需要 ...
前言:   去年的时候facebook开发工程师分享了了一个在facebook中实现的bigpipe的实现方案,如果您还不了解bigpipe方案解决的问题,请查看这个链接(http://www.facebook.com/note.php?note_id=389414033919)   当时,facebook的开发工程师主要对这个方案的目标,好处,以及总体的实现方法(没有很具体,只是一些思路)介绍了一下。听完facebook工程师的分享之后,感觉这个方案的确不错。它借鉴CPU上流水线的工作方式,用多线程异步运行的方式,将一个页面能够比原来更快的速度在客户端展现出来,可以让用户感觉不到页面延 ...
  当lucene默认的文本相关性排序无法满足需要时,我们需要自定义文档相关性打分,从而可以影响文档排序,此时可以使用solr的valueSource插件实现自定义打分。   solrconfig.xml 中的配置样例: <valueSourceParser name="distScore" class="com.dfire.tis.solrextend.valuesourceparser.ShopMultiCirclesGeoDIstValueSourceParser" > <lst name=&quo ...
客户端查询样例: is_valid:1+AND+entity_id:00323530+AND+((goods_type:1+AND+self_entity_ids:00323531)+OR+(goods_type:2+AND+self_entity_id:00323531))+AND+_query_:{!fieldboost+f%3Dstock_create_times}00323531   QP fieldboost实现: com.dfire.tis.solrextend.queryparse.s4supplyGoods.FieldBoostByPayloadQParserPlugi ...
  successful connect to /10.1.21.48:42363,pingResult:hello-1533403129040 2018-08-07 15:55:24 ERROR  o.a.s.c.c.DefaultConnectionStrategy- Reconnect to ZooKeeper failed:java.lang.IllegalStateException: zkpath:/tis/incr-transfer-group/incr-state-collect have not find child node at com.dfire.tis.solr ...
概要     Solr和ES搜索引擎都有集群模式,在Solr中可以向任何一个节点发起一个查询,如果查询中没有附带路由router键的话,该节点会扮演Merge的角色向集群中每个share的一个副本发起查询,最终将所有取到的结果排序,返回给客户端。   详细    为了测试需要在测试集群中构建一个Collection,有两个shard(shard中只有一个副本),使用查询Q为:id:9922600464a707520164a75ded18001f OR id:0000000064db34070164db344a460004,查询条件中的id在两个shard上各有一个存在。    从查 ...
   搜索需求:     比如商品“耐克运动鞋男士款”精准搜索是按顺序搜索拼音首字母或汉字。商品太多的时候。客户下单搜索的时候不一定知道商品的名称顺序,他可能会搜索“男士款运动鞋、男士耐克运动鞋、运动鞋耐克等等”搜索条件有限。商品名称越长。搜索条件越困难。顺序错一位就搜索不出来了。后来提出这需求。总部同意帮忙更改。经过测试后发现只要包含关键字的商品全部都搜出来了!如:现在搜索矿泉水只能搜“水”字,出来十几个然后选择。搜矿泉水三个字,什么石灰矿。什么泉的商品全出来了,出来上百种。   我们的意思是能不能以搜索的关键字分为优先级。不按商品的顺序搜索了。比如,“农夫山泉矿泉水”当我们搜索“ ...
在A openshfit站点S2I 创建的是一个docker镜像包,需要导入到B 的openshfit对应的docker仓库中去。   那么就需要在A站点中添加一个B站点授权的Secret账户。 在B站点的openshift master节点上执行: oc get sa oc serviceaccounts get-token builder  最终取得到token 跳转到A站的openshfit添加Secrect页面: https://xxxxx:8443/console/project/tis/create-secret 在页面上操作就行了  
  某天的生产环境服务器突然报告有cpu load超负荷的报警,然后赶紧查看查询日志,发现里里面有大量类似这样的查询: {q=(customer_mobile:/[0-9]{7}7785/+OR+code:7785)&distrib=false&_stateVer_=search4card:1494&start=0&fentityid:123456&rows=20&wt=javabin&version=2&_route_=123456&single.slice.query=true} hits=1 status=0 QT ...
       原生的solr中有/get 的request handler实现(org.apache.solr.handler.component.RealTimeGetComponent),实现原理是,先到tlog的内存中去找记录,找不到再到indexSearch中去找。这样当用户利用solrj客户端提交到solr服务端之后,可以不需要等待服务端softcommit,就能立即从服务端中取得最新提交的记录信息。       这样可以避免数据脏写的问题,但是,collection的索引结构使用Nested Document,客户端提交一个Nested Document 记录之后,再使用solr ...
背景 之前有个位朋友给我了一看了一段代码,大致意思是给一个列表,里面元素是人,需要将一个列表的用户随机分成两拨人,关键词是“随机” List<String> allPerson = new ArrayList<String>(); allPerson.add("何XX"); allPerson.add("李XX"); allPerson.add("屈XX"); allPerson.add("刘XX"); allPerson.add("王XX&quo ...
发现问题 最近在使用docValue发现了一个坑,初学者稍不注意很有可能入坑,进而会得出Lucene性能有问题的结论,所以我需要将这个坑填平以正视听。 接到业务方的一个需求,需要在查询结果上按照某一个字段去除重复,假设有以下两条记录: 学号 班级id 班级排名 001 1 1 002
        传统的解析JSON是要完全构建好一个完整的JSON文本内容然后通过JSON框架去解析反序列化,但是当JSON内容非常长,比如,一个JSON列表中存储有N个元组,而且非常长有上万个。这样在传输JSON文本内容的时候如何实现流式传输呢?方法当然是有的,在Solr的Xport代码中有就有这样一段代码,类名是:JSONTupleStream。                   import java.io.IOException; import java.io.Reader; import java.util.List; import java.util.Map; ...
      今天在线上生产环境中碰到一个Solr的查询条件无法匹配到查询结果的问题,问题虽小,但是找到问题的过程确实比较周折,还好最终问题只是一层窗户纸,这里记录以下,以作备忘。        问题是这样的,业务方告诉我有一个查询条件,没有办法匹配到目标记录。查询条件是:name:Y9砵仔糕吕托 收到问题,于是就开始了我的排错之路。         首先,确认了一下name字段原始的文本字段是“Y9砵仔糕吕托”,对应的列的名称是 name,field type是一个自定义类型,类型为:   <fieldType name="like" class=" ...
背景        实际业务场景中,有时会需要两阶段过滤,最终的搜索结果是在前一个搜索结果上进一步搜索而得到的(search-within-search)的特性。        假设,最终搜索结果集是由(A AND B)两个条件对应的命中结果集求交而得到的。如果A条件对应的文档集合非常小(大概不超过300个),而B条件对应的文档集合非常大。在这样的场景下在solr中使用二阶段过滤的方式来查询就再合适不过了。   详细实现    第一阶段,通过A求得命中结果集合,然后第二节点在第一阶段基础上再进行过滤。 对于第一阶段没有什么好说了了,只要在solr中设置普通参数q就能实现,关键是第二 ...
Global site tag (gtag.js) - Google Analytics