索引的本质就是一个symbol table
key是关键字, value就是docId,或者row locator的一个集合
docId 面对的是存储系统,接收一个docId, 返回对应的doc或记录,一般就是一个堆一样的东西。
索引的概念和任何数据结构无关,起的就是个关联作用(key -> {docId}), 就是一个具体的symbol table的应用(value 是docId集合),可以用任何数据结构实现,平衡树、hash表,trie, 甚至是数组、链表,只是每种数据结构有各自不同的时间和空间复杂度而已,即便用数组实现,查找某个关键字在哪些doc中出现,查索引也比直接一篇一篇读doc快
key是关键字, value就是docId,或者row locator的一个集合
docId 面对的是存储系统,接收一个docId, 返回对应的doc或记录,一般就是一个堆一样的东西。
索引的概念和任何数据结构无关,起的就是个关联作用(key -> {docId}), 就是一个具体的symbol table的应用(value 是docId集合),可以用任何数据结构实现,平衡树、hash表,trie, 甚至是数组、链表,只是每种数据结构有各自不同的时间和空间复杂度而已,即便用数组实现,查找某个关键字在哪些doc中出现,查索引也比直接一篇一篇读doc快