索引
- 倒排索引就是反向查找数据集
- 正排索引就是直接能查找数据
- 搜索数据的时候先通过关键字->倒排找到文件位置->得到文件内容
- 第一段话可以想象为数组,index为1,2,通过1,2可以直接访问得到想要的是正排索引
- 第二段关键字需要切词器,后面对应的索引位置 例如 厌烦对应文档1、上班对应文档1,2
- 搜关键字上班-》找到索引1,2(倒排);然后通过1,2直接找到对应的话(正排)
切词器
- 需要个切词器 对内容进行字段提取 切词器都有字典的,过滤一些语气词停词类的
- 提取的字段对应编排对应的文件构成了索引,对应文件映射怎么处理
倒排索引构建
- 我们可以用个map<key,list> key关键字 list存索引
- 字典树每个字典节点是个关键字,存的数据是索引
- B树构建索引但是我不知道怎么构建中文的排序搜索
正排索引构建
- 数组当时量大
- list 类型需要排序那种 因为生成索引的时候固定的
- map 通过key直接查找
索引存储
- 因为当数据量大的时候内存不够,或者机器重启都需要重新构建索引的,索引需要落盘
- 当文档变化的时候索引内容需要变动
- 文件量大如何分段
- MMAP系统调用硬盘映射内存的
- 索引文件加载的时候如何映射到索引的数据结构
数据查询排序
- 单纯的集合交并差,输入字段搜索的理解
- 匹配的数据量大了如何排序,依据什么
- 如何有纠错能力英文的大小写,中文的拼音,谐音词
其他关键问题
- 例如关键字在当前文档的关系度,对搜索结果很重要