lucene索引结构(四)-词典(Term Dictionary)索引文件结构分析

本文介绍了Lucene搜索引擎的反向索引结构,重点解析了词典(Term Dictionary)中的.tii和.tis文件。.tii文件作为词典的索引,加速了词项信息的查找,而.tis文件存储了词项的详细信息,包括词频、位置等。通过跳表机制,Lucene能够快速定位到查询词项,提高搜索效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    搜索引擎检索系统索引的核心是什么?
    显然是反向索引。
    好了,现在我们开始介绍反向索引部分。

0. 一些说明
    反向索引分成两部分,如下图(图来自《信息检索导论》):

    
    左面是词项词典(Term Dictionary),右边是倒排记录表(Posting)。
    
    在Lucene中,词典和倒排是分开存储的,词典存储在.tii和.tis文件中,而倒排又分为两部分存储,第一部分是文档号和词频信息,存储在.frq中;另一部分是词的位置信息,存储在.prx文件中。

    本章节将介绍.tii和.tis文件。

1. 索引文档集
    在分析索引之前,需要对几篇文档进行索引。

    去ChinaDaily上扒了三篇英文新闻,然后重新用索引程序对它们进行索引。

    和前面几篇文章介绍的一样,也是对它们分成path,modified和contents三个域进行索引,分别索引他们的路径,最后修改时间以及内容。具体代码如下:
    doc.add(new Field("path", f.getPath(), Field.Store.YES, Field.Index.NOT_ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS ));
    doc.add(new Field("modified",
        DateTools.timeToString(f.lastModified(), DateTools.Resolution.MINUTE),
        Field.Store.YES, Field.Index.NOT_ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
        doc.add(new Field("contents", br));

2. 词项词典索引(.tii,.tis)结构分析
2.1 作用
    凡是存在的,必是合理的。
    在分析结构之前,还是和之前一样,分析分析词典索引的作用吧。

    其实,在这儿也没啥好分析的,囧。。因为要没词典的话,你还搜个毛。。。

    只要但凡对搜索引擎索引的倒排结构稍有了解,就知道和搜索最相关的部分是反向索引,也即<词项ID->文档ID列表>的这么一个映射。
    很难想象一个搜索引擎接到一个query词之后,对所有文档grep一遍来取出命中的文档,这得多慢。
    
    当用户输入Query后,经过诸如大小写处理、分词、同义词处理、停用词去除等等等等一系列Query变换之后,最终会到词典中(此时词典已经由Lucene加载到内存了)中查询有无命中,如果有命中,就会取出它的词频和位置信息,这两个信息分别是存储在.frq和.prx的,而词典就会保存这个词的词频信息、位置信息在这两个文件中的地址。
    
    这样,程序就能很快的从.frq和.prx倒排文件中取出该词项的信息,然后就可以开始根据这些信息进行打分、排序什么的了,最后将一系列匹配上的文档返回。完成检索。

2.2 词项词典(Term Dictionary)索引文件结构分析
    它由两个文件组成,
    1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值