- 博客(8)
- 收藏
- 关注
多线程构建lucene索引遇到的并发锁问题
最近把一个多线程构建lucene索引的程序 从lucene2.9.1版本迁移到3.4版本,索引的时间增加了1/2。 一开始怀疑是代码问题,从头到尾,检查了一遍代码,没发现会导致性能下降的地方。 接着查了下机器负载,发现cpu负载比原来2.9.1版本要低一些,然后增加了线程数,发现load还是上不去。 怀疑多线程间有资源竞争了,用jstack 看了一下,果然,发现很多锁等...
2013-06-04 09:27:00
265
原创 lucene范围查询
lucene 范围查询NumericRangeQuery索引时,将数值按位切分为多个不同步长(不同精度)的域,不同步长的域分别建索引,查询时,也将查询的范围值按照多个步长划分到不同步长的域上查询,这样能减少查询的term的数量。FieldCacheRangeFilter使用lucene的FieldCache,即将字段值用大数组缓存起来,数组下标是docid,值是字段值,查询时,进行...
2013-05-14 17:23:33
231
原创 lucene的排序方式
lucene的查询排序有两种方式,一种是按照相关性排序,一种是按照域值排序 相关性排序api:public TopDocs search(Query query, int n)会对每个命中文档进行相关性打分,并返回得分最高的n个文档。 域值排序api:public TopFieldDocs search(Weight weight, ...
2013-04-22 14:24:04
195
Disruptor和ArrayBlockingQueue、LinkedBlockingQueue的比较
DisruptorArrayBlockingQueueLinkedBlockingQueue实现原理固定大小的环形的ringbuffer存放元素 固定大小的数组存放元素,通过插入、取出两个下标协同循环使用数组用链表存放元素,大小不固定锁无锁,多生产者之间有sequence竞争,采用比锁轻量的CAS操作有锁,且读和写是同一个锁,锁...
2013-03-25 14:09:13
533
原创 (转载)字符串匹配算法——Edit distance
字符串匹配算法——Edit distance 如何比较两个字符串之间的相似程度(或者差异)? 想要比较两个字符串之间的相似程度,可以看其中一个字符串通过几步操作可以转换为另一个字符串,通过度量转换操作的步数可以来衡量两个串的相似程度,如果转换步数越少,则两者越匹配。这里转换操作的度量就称为:edit distance。该值越小,则两个字符串越匹配。 但...
2013-01-16 17:17:47
191
原创 一个单线程的BufferedInputStream
一个单线程的BufferedInputStream 我们知道BufferedInputStream是一个线程安全的缓冲输入流,线程安全牺牲的是性能。有时候我们已经知道我们的程 ...
2011-10-22 19:39:29
189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人