lucene--文件格式3

2012-04-27

◦ HasSingleNormFile
▪ 在搜索的过程中,标准化因子(Normalization Factor)会影响文档最后的评分。
▪ 不同的文档重要性不同,不同的域重要性也不同。因而每个文档的每个域都可以有自己
的标准化因子。
▪ 如果HasSingleNormFile为1,则所有的标准化因子都是存在.nrm文件中的。
▪ 如果HasSingleNormFile不是1,则每个域都有自己的标准化因子文件.fN
◦ NumField
▪ 域的数量
◦ NormGen
▪ 如果每个域有自己的标准化因子文件,则此数组描述了每个标准化因子文件的版本号,
也即.fN的N。
◦ IsCompoundFile
▪ 是否保存为复合文件,也即把同一个段中的文件按照一定格式,保存在一个文件当中,
这样可以减少每次打开文件的个数。
▪ 是否为复合文件,由接口IndexWriter.setUseCompoundFile(boolean)设定。
▪ 非符合文件同符合文件的对比如下图:

◦ DeletionCount
▪ 记录了此段中删除的文档的数目。

◦ HasProx
▪ 如果至少有一个段omitTf为false,也即词频(term freqency)需要被保存,则HasProx
为1,否则为0。
◦ Diagnostics
▪ 调试信息。
• User map data
◦ 保存了用户从字符串到字符串的映射Map
• CheckSum
◦ 此文件segment_N的校验和。
读取此文件格式参考SegmentInfos.read(Directory directory, String segmentFileName):
• int format = input.readInt();
• version = input.readLong(); // read version
• counter = input.readInt(); // read counter
• for (int i = input.readInt(); i > 0; i--) // read segmentInfos
◦ add(new SegmentInfo(directory, format, input));
▪ name = input.readString();
▪ docCount = input.readInt();
▪ delGen = input.readLong();
▪ docStoreOffset = input.readInt();
▪ docStoreSegment = input.readString();
▪ docStoreIsCompoundFile = (1 == input.readByte());

▪ hasSingleNormFile = (1 == input.readByte());
▪ int numNormGen = input.readInt();
▪ normGen = new long[numNormGen];
▪ for(int j=0;j
▪ normGen[j] = input.readLong();
◦ isCompoundFile = input.readByte();
◦ delCount = input.readInt();
◦ hasProx = input.readByte() == 1;
◦ diagnostics = input.readStringStringMap();
• userData = input.readStringStringMap();
• final long checksumNow = input.getChecksum();
• final long checksumThen = input.readLong();

作者:robotbird, 分类:关于代码 标签: lucene , 浏览(2512), 评论(1)
上一篇: Lucene索引删除详解
下一篇: 罗马的故事-苏拉

相关文章

(1)条评论 订阅

  1. ${item.nickname} 币安 说:

    确实是不错的选择。

1

发表评论

电子邮件用于回复通知和avatar全球唯一头像 *

*