tim-wu
lucene之 節省磁盤空間的BitVector
org.apache.lucene.util.BitVector
這個小小的工具類用來保存bit數據,并且提供bit級別的boolean讀寫能力。
這部分能力類似
java
.util.BitSet
而有趣的地方在于BitVector提供了持久化的能力(保存到文件),
為節省磁盤空間:
if
(isSparse())
{
writeDgaps(output);
//
sparse bit-set more efficiently saved as
//
d-gaps.
}
else
{
writeBits(output);
}
首先判斷數據中是否bit值為1的數據非常少,如果是,就采用Dgaps算法,
這種算法將壓縮數據,結構如下
..
III(IB)+
第1個Int為標記位,值-1表示為Dgaps
第2個Int為數據長度(多少個bit)
第3個Int為數據有多少個bit值為1
而后循環,只保存Byte值非0的串
第1個Int保存和上一個便宜
第2個位為Byte,保存Byte值(也就是8位bit)
呵呵,看來做indexer真是啥都省著用啊
btw,判斷數據中是否bit值為1的數據非常少的算法頁很有趣
private
boolean
isSparse()
{
//
note: order of comparisons below set to favor smaller values (no
//
binary range search.)
//
note: adding 4 because we start with ((int) -1) to indicate d-gaps
//
format.
//
note: we write the d-gap for the byte number, and the byte (bits[i])
//
itself, therefore
//
multiplying count by (8+8) or (8+16) or (8+24) etc.:
//
- first 8 for writing bits[i] (1 byte vs. 1 bit), and
//
- second part for writing the byte-number d-gap as vint.
//
note: factor is for read/write of byte-arrays being faster than
//
vints.
int
factor
=
10
;
if
(bits.length
<
(
1
<<
7
))
return
factor
*
(
4
+
(
8
+
8
)
*
count())
<
size();
if
(bits.length
<
(
1
<<
14
))
return
factor
*
(
4
+
(
8
+
16
)
*
count())
<
size();
if
(bits.length
<
(
1
<<
21
))
return
factor
*
(
4
+
(
8
+
24
)
*
count())
<
size();
if
(bits.length
<
(
1
<<
28
))
return
factor
*
(
4
+
(
8
+
32
)
*
count())
<
size();
return
factor
*
(
4
+
(
8
+
40
)
*
count())
<
size();
}
發表于 2007-09-21 12:04
鵬飛萬里
閱讀(479)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
<
2007年9月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
導航
BlogJava
首頁
發新隨筆
發新文章
聯系
聚合
管理
統計
隨筆: 28
文章: 0
評論: 38
引用: 1
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
我參與的團隊
WebGIS開發設計組(0/0)
隨筆檔案
2008年2月 (4)
2008年1月 (6)
2007年12月 (2)
2007年11月 (2)
2007年9月 (8)
2007年3月 (1)
2006年5月 (4)
2006年4月 (1)
搜索
最新評論
1.?re: 關于Javascript的內存泄漏問題的整理稿
很有幫助!謝謝
--selma
2.?re: 關于Javascript的內存泄漏問題的整理稿
對象是值傳遞的,所以第一段代碼不可能是js對象和dom對象的循環引用,而是dom自身的循環引用
--axiheyhey
3.?re: 關于Javascript的內存泄漏問題的整理稿[未登錄]
評論內容較長,點擊標題查看
--鵬飛萬里
4.?re: 關于Javascript的內存泄漏問題的整理稿
評論內容較長,點擊標題查看
--goofect
5.?re: 關于Javascript的內存泄漏問題的整理稿
評論內容較長,點擊標題查看
--goofect
閱讀排行榜
1.?關于Javascript的內存泄漏問題的整理稿(18624)
2.?關于google map api中的球平投影算法接口: GProjection和GMercatorProjection類(4829)
3.?Lucene如何控制segments的數量?(4686)
4.?javascript的prototype(2527)
5.?Java7 VB2008都開始支持Lambda(Closure)了(2370)
評論排行榜
1.?關于Javascript的內存泄漏問題的整理稿(17)
2.?關于google map api中的球平投影算法接口: GProjection和GMercatorProjection類(7)
3.?備忘: UTF-8的格式(3)
4.?Lucene如何控制segments的數量?(3)
5.?復雜度為log(n)的排序堆棧算法(2)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 鵬飛萬里
主站蜘蛛池模板:
精品一区二区三区免费视频
|
国产福利免费视频
|
国产精品午夜免费观看网站
|
热99RE久久精品这里都是精品免费
|
污视频在线免费观看
|
午夜dj在线观看免费视频
|
yy6080亚洲一级理论
|
亚洲国产老鸭窝一区二区三区
|
亚洲国产精品一区二区久久hs
|
亚洲午夜国产精品无卡
|
国产亚洲综合精品一区二区三区
|
av网站免费线看
|
丁香花在线观看免费观看
|
久久亚洲国产成人影院网站
|
岛国岛国免费V片在线观看
|
成人在线视频免费
|
亚洲最大免费视频网
|
日韩大片免费观看视频播放
|
国产情侣激情在线视频免费看
|
国产亚洲一卡2卡3卡4卡新区
|
精品国产亚洲男女在线线电影
|
2020国产精品亚洲综合网
|
久久不见久久见免费视频7
|
亚洲国产精品一区二区三区久久
|
手机看黄av免费网址
|
久久精品亚洲综合一品
|
亚洲电影免费在线观看
|
亚洲福利视频一区二区三区
|
国产日韩在线视频免费播放
|
免费无码黄动漫在线观看
|
亚洲五月综合缴情婷婷
|
国内精品免费麻豆网站91麻豆
|
亚洲国产精品无码AAA片
|
中国性猛交xxxxx免费看
|
中文字幕在线亚洲精品
|
成人免费无码H在线观看不卡
|
亚洲午夜福利AV一区二区无码
|
福利免费在线观看
|
久久久久亚洲av无码专区
|
91在线视频免费播放
|
亚洲免费网站观看视频
|