`
suichangkele
  • 浏览: 198111 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
写这篇博客第一个是为了记录在solr中自定义queryParser(顺便介绍一下solr的queryParser),第二个是在 http://suichangkele.iteye.com/blog/2363599 (自定义得分的PrefixQuery)这篇博客中也说了要在solr中使用自己的query要使用自己的queryParser,第三个是公司业务需求,需要实现更加智能的搜索提示(智能是我自己给加的)。因为以上的原因我自己写了一个queryParser来实现我心中理想的搜索提示(先声明一下,我这里使用的是solr5.5.3的版本)。   1、solr中的queryParser:为什么 ...
链接:https://wiki.apache.org/solr/SolrPerformanceProblems? 主要讲了:gc、commit、内存大小(包括java、os),cache(涉及到warm)对性能的影响,讲的很好。    
在solrCloud中,我们发起的一次查询请求绝大部分是朝多个shard发起的请求,但是可能存在这么一个情况,我已经知道这次要查询的sahrd是哪一个了,那么如何只向一个shard发起请求呢?这个博客就是看看solrCloud对分布式请求的判断,代码在HttpShardHandler中,看看checkDistributed方法: /** * 判断这次请求是不是分布式的请求,根据是不是有zk, * 如果是的话,则找到由Router决定的要路由到的多个shard, * 并添加多个shard的多个replica的url,用|分隔,放在rb的shard和slices中 ...
(先声明一下,我使用的lucene的版本是lucene4.7.2) 在lucene中,有一种类型的query叫做MultiTermQuery,故名思议,他是要涉及到很多个term的query,比如我们常用的WildcardQuery、FuzzyQuery、PrefixQuery、TermRangeQuery、NumericRangeQuery等,他们都 ...
sorlCloud是分片的,那么如何决定一个document应该到哪一个分片呢?负责解决这个问题的东西就是DocRouter,翻译过来是doc路由器。在创建一个集合(collection)的时候,我们必须要给集合置顶一个docRouter,solr中默认是使用基于hash策略的docRouter(CompositeIdRouter),当然还有其他的Router,这个博客就要说这些。 我们先看一下DocRouter的源码,里面有很多的抽象方法,   public abstract Slice getTargetSlice(String id, SolrInputDocument sdoc ...
    之前一篇博客中写道solrCloud对查询的请求是在服务端进行的组装,是对所有的shard的所有的replica进行的轮训的。这两天看了下在服务端solr是如何进行操作的,这里涉及到的代码超级多,我就只贴一部分,用来说明大意即可 ...
近日在用solrCloud的时候出现了一些状况,在进行查询的时候,由于某些节点的响应速度过慢导致整个请求响应的很慢,我们的解决办法是设置超时时间,也就是如果某些shard的响应太慢,则干脆忽略他的响应。这要涉及到配置httpClient的多个timeout,于是重新学习了一下HttpClient的三个配置,从源码中得到解释,然后做了个例子验证了源码的解释(我使用的httppClient的版本是4.5.2)。 httpClient的三个timeout分别是:connectionRequestTimeout、connectionTimeout、socketTimeout,先看源码中的解释吧: ...
继续看他的源码,在上一篇博客中还有几个方法没有看,第一个是getElevationMap,如果在请求中没有指定elevateIds或者没有指定excludeIds的话,则调用这个方法   /** get the elevation map from the data dir <br/> 从data中读取配置文件。 * ...
  工作中用到了关键词置顶、拉黑的操作,自己毫无办法,考虑了很久打算用payload,但是又来在一个研究lucene源码的群中某个小伙伴给我提示说solr中已经为我们实现了这个功能,顿时大喜,马上百度了一下,然后内心很激动,solr真的太好用了,都为我们考虑到了。不过这远远不够,还有更多的事情需要做,不明白他的实现原理,只能猜,一遍一遍的试错,成本太高,所以还是拿来源码看吧。(对于没有对solr的置顶或者竞价排名从来没有接触过的小伙伴,麻烦先百度下“solr 竞价排名”去看看他的基本的配置文件,好心理有个数,我的这篇博客不是入门级的,不适合从头开始)         先说一下什么是关键 ...
       solrCloud有多个shard,一个shard有一个或者多个replica,那么再solrj发起添加documnet(这里称作update请求)或者是查询(这里叫做query请求)的时候,是如何向最终的各个solr的不同的shard的replica发送的请求呢?我看了看solrj中 ...
在使用solr的时候,在管理页面的analysis中可以发现有对词的分析的展示,在solrj中同样提供了方法获得,记个笔记,方便以后再用的着。 使用solrj获得分词结果要使用FieldAnalysisRequest类。       solrj提供的接口的逻辑和管理页面的逻辑一样,先是区分建立索引和查询两种情况(比如ik的使用时就是在建立索引的时候不适用智能分词,而在查询时启用智能分词),每种情况的分词时再区分是哪个域(fieldName)或者是域的类型(filedTypes)。对于第一个体现在FieldAnalysisRequest的fieldValue和query上,如果是建立索引 ...
1、我想记录gc的历史,方便以后的分析在启动jvm的时候添加如下: -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:D:/gc.log -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10K -XX:+UseGCLogFileRotation         -XX:+PrintGCDetails:输出gc的详细信息        -XX:+PrintGCDateStamps :输出gc发生的时间       -XX:+PrintHeapAtGC ...
之前已经写了一篇solrCloud的搭建笔记了,最近又发现一种更好的方法,在记录一边,我使用的zk的版本是3.4.6,使用的solr的版本是5.5.3,请在apache的官网现在solr此版本的安装包,另外我使用的tomcat是8.x的版本,8之下的会报一个错。 1、搭建zk环境,我的zk的url是ip:2181,为了不和其他的配置混乱,我在zk中单独建立了一个节点,来存放solr的信息,solr中叫做chroot,我建立的solr的chroot叫做solr5,所以最终的连接zk的ulr为ip.2181/solr5。   2、上传配置文件:      找到你的solr的安装包,将安装 ...
看这篇博客  http://www.open-open.com/lib/view/open1429883238291.html
java虚拟机有两种模式,一个中server模式,即当做服务器来使用,一个是client模式,用在图形界面中。这个博客写的好:http://www.cnblogs.com/love-jishu/p/4402156.html
Global site tag (gtag.js) - Google Analytics