Lucene索引复合文件
这里将阐述以下概念:
①Directory:索引字典,Lucene自定义概念,如同现实中的字典存放词语一样,该字典存放文件;字典的操作包括向字典中添加文件,删除文件等。
②合并后的文件这里称为复合文件。
③文件在复合文件中有两处表示形式:一处为字典中的文件结构体,一处为文件数据;见下文中复合文件的格式。这里称复合文件中的各个文件有两种称谓,一种文件结构体,一种文件数据;
④文件还有一种表示形式FileEntry,记载复合文件中的信息;
复合文件的格式:
CompoundFileWriter文件将记载各种信息的索引文件写成一个复合文件,格式如下:
<ul>
<li>各种索引文件数目n</li>
<li>字典,字典中一共有n个文件结构体,代表各种索引文件,正好n个
<ul>
<li>文件数据在复合文件中的位移</li>
<li>文件名</li>
</ul>
</li>
<li>文件数据,真正的文件数据,n个文件合并后的数据,与字典中的n个结构体对应</li>
</ul>
实现方法:
①FileEntry:记载复合文件中各个文件的信息
String file;文件的名字
long directoryOffset;文件结构体中该文件在复合文件中的位移;
long dataOffset; 文件数据中该文件在复合文件中的位移;
②写复合文件:
先写文件个数;接着,三个循环,每个循环写n个文件相应信息;
第一个循环:
写复合文件的文件结构体;注意,这里的文件数据在复合文件中的位移暂且为0,且将复合文件中的文件结构体的位移记录写到FileEntry中directoryOffset中,这样是为了重写使用;
第二个循环:
写文件数据,同时将文件在复合文件中的位移记录到FileEntry中dataOffset中;
第三个循环:
重写复合文件中文件结构体的文件数据在复合文件中的位移信息;通过FileEntry中信息来写,这里有复合文件中文件结构体在复合文件中的位移和复合文件中的文件数据在复合文件中的位移。