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
鵬飛萬里
閱讀(475)
評論(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的內存泄漏問題的整理稿(18604)
2.?關于google map api中的球平投影算法接口: GProjection和GMercatorProjection類(4822)
3.?Lucene如何控制segments的數量?(4672)
4.?javascript的prototype(2522)
5.?Java7 VB2008都開始支持Lambda(Closure)了(2361)
評論排行榜
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 鵬飛萬里
主站蜘蛛池模板:
国产无人区码卡二卡三卡免费
|
国产免费午夜a无码v视频
|
亚洲а∨天堂久久精品9966
|
国产成人免费一区二区三区
|
成全视成人免费观看在线看
|
亚洲国产日韩在线成人蜜芽
|
国产a级特黄的片子视频免费
|
中文字幕一区二区免费
|
亚洲www77777
|
国产成人精品日本亚洲
|
大学生高清一级毛片免费
|
a级大片免费观看
|
亚洲国产欧美日韩精品一区二区三区
|
亚洲一区二区三区首页
|
在线播放免费播放av片
|
99精品视频在线观看免费
|
色婷五月综激情亚洲综合
|
激情综合色五月丁香六月亚洲
|
欧洲乱码伦视频免费
|
一二三四在线观看免费中文在线观看
|
久久久久亚洲AV片无码下载蜜桃
|
国产最新凸凹视频免费
|
国产大片免费网站不卡美女
|
四虎精品成人免费视频
|
一本天堂ⅴ无码亚洲道久久
|
亚洲∧v久久久无码精品
|
亚洲成?Ⅴ人在线观看无码
|
成人免费视频69
|
a级毛片100部免费观看
|
美女黄频免费网站
|
香蕉大伊亚洲人在线观看
|
亚洲大成色www永久网站
|
免费看小12萝裸体视频国产
|
51视频精品全部免费最新
|
精品国产呦系列在线观看免费
|
欧亚一级毛片免费看
|
学生妹亚洲一区二区
|
亚洲精品国产成人
|
国产成人A人亚洲精品无码
|
伊人久久亚洲综合影院
|
手机在线免费视频
|