学习es的最常听见的就是倒排索引,那什么是倒排索引呢?
首先,既然有倒排 那也是有相对应的,叫做正排索引。
如一个场景 百度搜索,百度收录了很多文章,搜索 2022年周杰伦演唱会
一般情况下文章的标题或者内容,是很少能跟搜索词完全匹配。
所以会先对搜索词进行分词,如 分成 2022年 周杰伦 演唱会 三个词。
然后搜索引擎就会去搜索有这些词的文章。
比如有4个标题
标题 | 关键词 |
---|---|
周杰伦香港演唱会2022年 | 周杰伦 演唱会 2022年 |
周杰伦2022年准备要参加。。。 | 周杰伦 2022年 |
2022年放假安排通知 | 2022年 |
全明星演唱会将在。。。 | 演唱会 |
我就是打酱油的,倒是你还是得搜索我 | – |
那么很显然第一个标题里就关键词数量最多,搜索返回第一条。
这样以文章标题或者内容文档等为主,查看其中有几个关键词就是,正排索引。
而反之倒排索引,就是以关键词为主,来查看文章标题。
关键词 | 标题 |
---|---|
周杰伦 | 文章1,文章2 |
2022年 | 文章1,文章2,文章3 |
演唱会 | 文章1,文章4 |
发现3个关键词都命中的就是文章1,其次是文章2,以此来进行搜索。
这就是倒排索引!
总结
这样做的好处就是,不用把所有的文章都过滤一遍,比如正排索引时,虽然第五篇文章没有相关的关键字,但是搜索引擎并不知道有没有,所以还是得去判断一遍。
而倒排索引,先分出关键词后,找出有这些关键词的文章,再来根据出现的次数跟权重来对比即可,文章5没有关联,可以直接忽略掉,效率自然就提升了很多!