xxx.fnm
這個文件是最重要的文件,存儲了Field的名字和Field的屬性。 生成時先生成此文件,加載時也現價此文件,其餘文件幾乎都依賴於此文件。ui
在這個文件中,Field之間沒有作排序。同時這個文件也決定了每一個Field的編號,第一個Field是0,第二個Field是1,以此類推。在其餘文件中引用到Field時,都是使用Field的編號。 orm
相關代碼:blog
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);
}
}it
如:io
第一個字節02 表示個數,04表示第一個字段的大小,後面接着4個字節爲內空,而後01爲屬性,08表示第二個字段的大小,最後一個字節0F表示第二個字節的屬性值.ast