`
suichangkele
  • 浏览: 198091 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
之前一直用dismax,但是一直没有看看他到底是怎么实现的,今天终于看了一遍源码,记个笔记,方便以后查阅。 当我们使用defType=dismax的时候就会使用到DisMaxQParser这个类,他是一个QParser,用于根据用户的输入解析为一个Query类的实例。我们看看他的解析方法: @Override public Query parse() throws SyntaxError { parsed = true; SolrParams solrParams = SolrParams.wrapDefaults(localParams, para ...
之前对线程池的理解很是主观,我的理解是在线程池初始化的时候就生成指定的数量的线程,然后将一些任务添加到一个阻塞队列中,然后多个线程同时从阻塞队列中取任务执行,当没有任务时线程阻塞,今天下午看了下大神 ...
Semaphore,翻译叫做信号灯,是用来做资源访问限制的,他维持了一个准许指令的集合,如果当前没有可以指令的话,调用一次acquire就会将当前的线程阻塞,没调用一次release就会将当前线程持有的指令还回指令集合。他的内部实 ...
之前看了CountDownLatch,他的实现是使用了aqs,提前设置好state的值,如果state不是0的时候调用await就会阻塞当前线程,加入到aqs的队列中,调用countDown就会减小state的值,当state的值时0的时候就会释放锁,将队列中的所有的线程释放,开始运行。这个CountDownLatch可以用于不同种类的线程之间,比如我们在连zk的时候,因为zkClient内部是使用的另一个线程链接zk,我们的主线程要在zk链接之后才能继续操作,所以就使用了CountDownLatch,这是用在不同种类的线程中。CountDownLatch也可以用在相同种类的线程中,比如有这 ...
之前再学zk的时候,用到了这个CountDownLatch,他的作用是等其他的线程都执行完了某个操作之后再让当前的线程执行,在其他线程没有执行完之前当前线程要阻塞,这样就能实现线程之间的通信了。因为最近刚学习了ReentrantLock, ...
之前写过ReentrantLock的源码的博客,但是还有个重要的东西没有介绍——Condition,他的用法我就不介绍了(这种介绍性的博客我不喜欢写),我今天就写一下Condition的实现原理,还是从Conditon的常用方法入手。 1、await():这个方法由当前获得锁的线程调用,意思是释放锁,挂起自己并且唤醒等待当前线程持有的锁的其他线程(在aqs的等待队列中的其他节点),类似于synchronized同步代码块的wait方法的意思。 public final void await() throws InterruptedException { if ( ...
上一篇介绍了不公平的重入锁,那什么是公平,什么是不公平呢?仅仅通过第一篇博客可以回答这个问题的,但是往往我们会忽略掉这个问题,看一下公屏和不公平的差别在哪里能勾引起我们更多的思考,这样就能解释什么是公平、非公平了。(在继续看这篇博客之前,请一定要读一下http://suichangkele.iteye.com/blog/2368173 这个博客)。 在ReentrantLock的构造方法中,如果没有设置参数,默认就是不公平的,如果设置为true,则会生成一个FairSync的同步器,我们看一下他和NonFairSync的差别的地方吧: static final class Nonfair ...
ReentrantLock,翻译过来叫做重入锁,是实现线程安全的一个方式,和synchronized的作用类似,但是他的实现原理是什么呢,在查看了很多的博客之后,我决定自己写一篇,形成自己的理解。从ReentrantLock的方法一个一个的来吧。 补 ...
由于工作中需要做同义词,今天看了看solr的实现以及源码,记个笔记。我看的solr的版本是5.5.3. 在solr的schema.xml中(5.x的版本是managed-schema文件)已经有实例了,截图如下: <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <!-- 切记,只有TextField中才可以设置type=index或者type=query的两个analyzer,我看过源码, ...
之前在 这篇博客中 (http://suichangkele.iteye.com/blog/2365868)写到了关于solr所使用的cache的统计信息的获取,但是他只在更新SolrIndexSearcher的时候才会触发,那么如何能随时的查看cache的使用情况呢?倒着推:如果要查找缓存的使用,必须获得SolrCore,获得SolrCore太简单了,任何一个Request都可以获得SorlCore,那么只要添加一个RequestHandler就可以了。我的代码如下: public class CacheStatisticsRequestHandler extends RequestHa ...
前面的几篇博客已经介绍了solrIndexSearcher的cache,warm,listener,其实还有其他的很多的配置,这个博客就是将这些。先声明一下,我的solr是5.5.3. 在solrCOnfig.xml中的<query></query>下的配置都是和SolrIndexSearcher相关的,上一个 ...
先声明一下,我的solr的版本是5.5.3   上一篇博客中说了当更新SolrIndexSearcher的时候并不是仅仅调用预热,还有其他的操作,那么都是有什么呢,看一下SolrCore的getSearcher方法(参数最多的一个),如果if (newSearcher != currSearcher) ,即索引发生了变化(无论是commit还是softCommit都算是变化),不仅仅是调用上一个博客中讲的warm,还有下面的操作: if (currSearcher == null) { future = searcherExecutor.submit(new Callable ...

solr的warm

    博客分类:
  • solr
先说明一下,我使用的是solr5.5.3   之前在一篇博客中FastLRUCache中有个重要的方法是warm,当时没有说什么意思,这篇博客就是介绍这个。   warm的意思就是热身,即当一个IndexSearcher因为提交要重新生成一个IndexSearcher的时候,要对新生成的searcher进行warm,我们看一下SolrCore这个类的getSearcher方法,在这个方法里,如果新打开的searcher和之前的searcher不一样(即说明索引发生了变化),就会对新的indexSearcher进行warm, if (newSearcher != currSear ...
先说一下,我使用的sorl的版本是5.5.3   上一个博客说完了solr中的cache,只是介绍了他的实现原理以及配置,并没有发现程序是如何使用他的,这个博客就是说这个,SolrIndexSearcher中对cache的使用。先说一下SolrIndexSearcher,这个 ...
先说一下,我使用的版本是5.5.3   搭建过solr的人肯定对solrconf.xml不陌生,在<query></query>中有多个cache,比如filterCache、queryResultCache,documentCache。这个博客就是介绍这三个cache的意思、配置以及他们的使用。 我们直接看代码,对于这三个cache的使用是在solrIndexSearcher中,他有下面的属性   private final boolean cachingEnabled;//这个indexSearcher是否使用缓存   private final Sol ...
Global site tag (gtag.js) - Google Analytics