csusky

常用链接

统计

最新评论

org.apache.lucene.index.SegmentInfos

final class SegmentInfos extends Vector
可以看出该类实际上是一个Vector   以及封装了对该Vevtor的一些操作
实际上封装的是对segments文件的一些读写操作
先来看下segments文件的格式

segments文件的格式:
int:  =-1         文件是否是Lucene合法的文件格式正常情况下为 -1
long:             版本号,每更新一次该文件将会将版本号加1
int:                用来命名新段
int:                段的数目
String + int  段的信息 String是段的名称  int是段中所含的doc数目
String + int  同上

所以用Lucene的API,我们可以简单的打印出其segments的所有信息

try {
   //DataInputStream fis = new DataInputStream(new FileInputStream("C:\\sf\\snow\\segments"));
   FSDirectory dir=FSDirectory.getDirectory("C:/sf/snow", false);
    InputStream input = dir.openFile("segments");
   System.out.println("Format:"+input.readInt());             //得到文件标志,是否为正常的segments文件
   System.out.println("version:"+input.readLong());        //得到版本号
   System.out.println("name:"+input.readInt());                //得到用来重命名新段的int,暂时不知道有什么用
   int n=input.readInt();                                                          //段的数目
   System.out.println("SegmentNum:"+n);                          
   for(int i=0;i<n;i++) {                                                           //用循环打印出所有段的信息 名称和长度
    System.out.println("segment "+i+" - name:"+input.readString()+" num:"+input.readInt());
   }
  } catch (Exception e) {

  }
当然,该类提供了更为复杂的访问和更新segments文件的方法
 final void read(Directory directory)    将所有的段信息保存在本vector中
final void write(Directory directory)    跟新该segment文件的内容,主要是为了添加段,
主要是更新 版本号 段的数目,跟新完这些后即可往segment文件后添加新段的信息。

posted on 2008-04-18 17:02 晓宇 阅读(350) 评论(0)  编辑  收藏 所属分类: LUCENE


只有注册用户登录后才能发表评论。


网站导航: