闭卷重建词典、term id与文档id的对象、公式、算例、算法与失败边界。
信息检索与搜索系统 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建倒排表与posting的对象、公式、算例、算法与失败边界。
闭卷重建位置索引与短语检索的对象、公式、算例、算法与失败边界。
闭卷重建文档频率、集合频率与长度的对象、公式、算例、算法与失败边界。
闭卷重建分块构建与外部排序的对象、公式、算例、算法与失败边界。
闭卷重建增量索引、段合并与删除的对象、公式、算例、算法与失败边界。
闭卷重建压缩:gap、VB与块编码的对象、公式、算例、算法与失败边界。
闭卷重建索引一致性与构建验收的对象、公式、算例、算法与失败边界。
对象:倒排索引为每个term保存包含它的文档及频次、位置等payload。;公式:postings(t)=[(did,tf,positions),…]按did递增。;算例:d1“a b a”、d2“b c”:a→[(d1,2,[0,2])],b→[(d1,1,[1]),(d2,1,[0])]。;边界:posting未排序导致交集失效;tf与位置数量不一致。。
对象:词典把规范词项映射term id,文档表把外部标识映射稳定doc id;版本决定可解释性。;公式:dictionary:t→tid,documents:external_id→did。;算例:词“search”分配tid=42;文档删除后不应把did=7立即复用给另一文档,否则旧posting失真。;边界:按进程内hash作为永久ID;重建后ID变化但缓存未失效。。
对象:df统计含词文档数,cf统计语料总出现次数,dl是文档token数;三者用于不同估计。;公式:df_t=|{d:tf_td>0}|,cf_t=Σd tf_td。;算例:某词在d1出现3次、d2出现2次:df=2、cf=5;不能把cf代入IDF。;边界:增量删除只减cf不减df;字段长度混成全文长度。。
对象:位置posting保留词在文档中的token offset,短语要求相邻位置满足固定差。;公式:phrase(a,b):存在pa∈P_a,pb∈P_b使pb=pa+1。;算例:a位置[1,5],b位置[2,8],短语只在1→2命中一次。;边界:字符offset与token offset混用;停用词删除破坏短语间距。。
对象:增量写新segment,查询同时读多段;后台merge降低段数,删除用tombstone直到合并回收。;公式:query=merge(segment_1,…,segment_m)−deleted。;算例:3个段返回doc id[1,4]、[2,4]、[3],合并去重为[1,2,3,4]。;边界:先删旧段再发布新段导致查询空窗;更新文档新旧版本同时可见。。
对象:大语料无法一次驻内存时,分块产生有序(term,doc)段并多路归并。;公式:总成本约O(T log T),内存受block size约束。;算例:1亿token分成100个百万token块;每块排序后归并,不需同时保存1亿三元组。;边界:块边界同一term未合并;临时段损坏却静默跳过。。
对象:词典df、posting长度、位置、文档长度和原始文本必须形成可反查不变量。;公式:df(t)=len(postings(t)),tf=|positions|。;算例:posting显示tf=3却只有2个位置,说明构建或序列化错误,应阻断发布。;边界:只测索引能打开;随机抽样未覆盖高频大posting和空文档。。
对象:有序doc id可存差分gap;可变字节和块压缩利用小整数减少I/O。;公式:gap_i=doc_i−doc_{i−1}。;算例:doc id[10,13,20,21]转gap[10,3,7,1],后三个数明显更小。;边界:对未排序posting做gap出现负数;压缩节省CPU却被解码成本抵消。。