可搜索加密之倒排索引

倒排索引是可搜索加密方案的一个重要的实现方式,主要和bloom filter 搭配使用解决单关键词检索问题。

传统的线性索引是以文章的名字作为key,而文章的内容作为value,例如:

可搜索加密之倒排索引
传统的线性查找一个10MB的word文件,查找关键字如果在文档最后,大约3秒钟。

倒排索引则是记录每个词条出现在哪个文档以及文档中的位置,可以根据词条快速定位到包含这个词条的文档及出现的位置。

  • 文档:索引库中的每一条原始数据,例如一个网页信息,一件商品信息。
  • 词条:原始数据按照算法进行分词,得到每一个词。

创建文档列表

首先对原始文档进行编号,形成一个文档列表。

可搜索加密之倒排索引

创建倒排列表

对文档中的数据进行分词,得到需要搜索的词条,对词条进行编号,构建索引列表,在数据位中记录包含该词条的所有文档编号。

可搜索加密之倒排索引

倒排索引构建的流程可以总结为:

  • 首先把所有的原始数据进行编号,形成文档列表。
  • 把文档数据进行分词,得到很多的词条,以词条为索引。保存包含这些词条的文档的编号信息。

搜索的过程:

  • 用户输入任意的词条时,首先对用户输入的数据进行分词,得到用户需要搜索的所有词条,然后拿着这些词条去倒排索引列表中进行匹配。
  • 在词条对应的索引位找到文档的ID,并根据ID找到对应的文档。

这里面只是简单的介绍了倒排索引的原理,但是在实际可搜索加密方案中,索引还有词条都需要进行加密处理,在此不多赘述。