CLucene中索引生成的文件格式和内容

xxx.fnm
这个文件是最重要的文件,存储了Field的名字和Field的属性。 生成时先生成此文件,加载时也现价此文件,其他文件几乎都依赖于此文件。

  在这个文件中,Field之间没有做排序。同时这个文件也决定了每个Field的编号,第一个Field是0,第二个Field是1,以此类推。在其他文件中引用到Field时,都是使用Field的编号。 

è¿éåå¾çæè¿°
  

相关代码:

void FieldInfos::write(IndexOutput* output) const{
    output->writeVInt(static_cast<int32_t>(size()));
    FieldInfo* fi;
    uint8_t bits;
    for (size_t i = 0; i < size(); ++i) {
        fi = fieldInfo(i);
        bits = 0x0;
         if (fi->isIndexed) bits |= IS_INDEXED;
         if (fi->storeTermVector) bits |= STORE_TERMVECTOR;
         if (fi->storePositionWithTermVector) bits |= STORE_POSITIONS_WITH_TERMVECTOR;
         if (fi->storeOffsetWithTermVector) bits |= STORE_OFFSET_WITH_TERMVECTOR;
         if (fi->omitNorms) bits |= OMIT_NORMS;
        if (fi->storePayloads) bits |= STORE_PAYLOADS;

        output->writeString(fi->name,_tcslen(fi->name));
        output->writeByte(bits);
    }
}

如:

第一个字节02 表示个数,04表示第一个字段的大小,后面接着4个字节为内空,然后01为属性,08表示第二个字段的大小,最后一个字节0F表示第二个字节的属性值.

发布了48 篇原创文章 · 获赞 7 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/wenxinfly/article/details/102656881
今日推荐