阿里面试题解答-倒排索引

倒排索引原理?

elasticsearch 倒排索引原理 - 知乎

倒排索引就是通过值去找文件

term dictionary:如果后面的 term 比较多,例如 18 岁的有好几万人。需要提高查询效率,因此产生了 term dictionary,就是吧所有的 term 做一下排序,然后使用二分查找,logN次 访问磁盘

term index:每次访问磁盘太慢了,需要放到内存里,可以整个 term dictionary 太大了,只能放一部分。所以出现了这个 Term Index,它其实是一个 Trie 树。

最后得到下面的这样一个东西,先查 term index,然后 term dictionary,然后二分查找元素

如何联合索引查询?

  • 使用skip list数据结构。同时遍历gender和age的posting list,互相skip;
  • 使用bitset数据结构,对gender和age两个filter分别求出bitset,对两个bitset做AND操作。

什么是跳表(skip list)深夜学算法之SkipList:让链表飞

bitset 就是给所有的文件做一个 bit 表,然后按位与。

原文地址:https://www.cnblogs.com/coderbean/p/11198201.html

时间: 2024-12-22 20:05:42

阿里面试题解答-倒排索引的相关文章

算法笔记_111:第五届蓝桥杯软件类省赛真题(Java本科A组)试题解答

 目录 1 猜年龄 2 李白打酒 3 神奇算式 4 写日志 5 锦标赛 6 六角填数 7 绳圈 8 兰顿蚂蚁 9 斐波那契 10 波动数列   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题:猜年龄 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍".小明又补充说:"她们可不是双胞胎,年龄差肯定也不超过8岁啊." 请你写出:小明的较小的妹妹的年龄. 注意: 只写一个人的年龄数

阿里笔试题(2015)持续更新中

第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平均每个人逗留时间为20分钟,那么开场前20分钟一共来了400人,且有20个人逗留时间已经到,但他们不一定出去,注意是平均时间,所有博物馆最少应该容纳500人 双向循环列表,从任何一个元素开始可以遍历全部元素 先和后面的元素相连 s->next=p->next; p->next->pre

Linux三剑客企业级经典面试题解答实战

Linux三剑客企业级经典面试题解答实战 说明:来自早晨老男孩教育在线班一期同学的面试题和学生给出的答案整理 面试题:请过滤oldboy.log中在device: {}里面出现了多少次oldboy,过滤并统计出来. oldboy is a linuxer. device: { oo oldboy no sql this is log niu niu } oldboy device: { oldboy no sql this is log niu niu } oldboy device: { ol

算法笔记_108:第四届蓝桥杯软件类省赛真题(JAVA软件开发本科A组)试题解答

 目录 1 世纪末的星期 2 振兴中华 3 梅森素数 4 颠倒的价牌 5 三部排序 6 逆波兰表达式 7 错误票据 8 带分数 9 剪格子 10 大臣的旅费 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 世纪末的星期 标题: 世纪末的星期 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破. 还有人称今后的某个世纪末的12月31日,如果是星期一则会.... 有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,"谣言制造商&qu

阿里笔试题记录(Android客户端部分)

阿里笔试题记录(Android客户端部分) 选择题 结果应该是选择 80,8 思路: - 指针的值都是一个个地址,而地址是用无符号整型值来表示的,也就是unsigned int.因此一个指针类型变量的大小就是unsigned int类型的大小. - 64位系统,一个地址占用的二进制位数为64(8字节),32位系统,地址的二进制位数32(4字节).参考64位操作系统的指针不都是64位吗 32位cpu和64位cpu,这个位数指的是数据字长,而不是地址字长.两者没有必然的数值上的联系.处理器字长是指处

算法笔记_122:蓝桥杯第七届省赛(Java语言A组)试题解答

 目录 1 煤球数目 2 生日蜡烛 3 搭积木 4 分小组 5 抽签 6 寒假作业 7 剪邮票 8 取球博弈 9 交换瓶子 10 压缩变换   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 煤球数目 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字. 注意:你提交的应该是一个整数,不要填

阿里笔试题-派生类构造函数 创建顺序

派生类 与基类的关系: (1)创建构造函数的顺序 :基类构造函数(注意此处基类的成员不能初始化) ==>派生类成员初始化 ==>派生类构造函数 (2)派生类的构造函数 中 基类的构造函数默认在第一条,如果不写super(),则默认在第一条,注意位置不能颠倒 (3)派生类可以继承全部的基类的构造函数 阿里笔试题 举个栗子: 1 package com.test; 2 3 public class DispatchTest { 4 5 public static void main(String[

Java笔试题解答和部分面试题

面试类  银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯定没有任何问题.有个例子就是使用HashMap来存储系统配置项.当有多于一个线程对HashMap进行修改操作的时候才会真正产生问题,比如增加.删除.更新键值对的时候.因为put()操作可以造成重新分配存储大小(re-size

精选30道Java笔试题解答

个人觉得整理的超级好的Java笔试题,原文请见 http://blog.csdn.net/lanxuezaipiao/article/details/16753743 1. 下面哪些是Thread类的方法() A start()       B run()       C exit()       D getPriority() 答案:ABD 解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方