很多搜索引擎都是基于倒排索引比如luncenesolr以及elasticsearch
正排索引
聊倒排搜索之前先来看看正排索引正排其实就是数据库表他通过id和数据进行关联如下
| 数据id | 数据内容 |
|---|---|
| 1001 | 苹果公司发布iPhone |
| 1002 | 地球引力起源于苹果 |
| 1003 | iPhone屏幕碎了 |
| 1004 | 我在苹果商店维修屏幕 |
| 1005 | 我刚刚吃了苹果 |
我们可以通过搜索id来获得相应的数据也能删除数据。你买了一本书书的目录其实也是正排搜索。
假设现在我要搜苹果俩字那么他会对这张表格中每一行的数据做匹配去查找一下是否包含苹果这两个字从第一条匹配到最后一条如果一张表中数据量不多几万十几万那么问题不大但是一旦数据量有上百万上千万那么全表扫描这种的搜索性能就会有影响。
其次这个时候我想搜索苹果iPhone那么我们无法把这词汇拆开再到数据库去搜索。
优点使用起来方便原理也简单比较入门
缺点检索效率低下适合简单场景使用比如传统项目数据量较小的项目。不支持分词搜索。
倒排索引
与正排是反着来的他会把文档内容进行分词比如苹果公司发布iPhone是一个文档数据当我们把他存入到搜索引擎中去的时候会有一个文档id这个文档id就类似于数据库主键。但是这文档存储的时候和数据库不一样他会进行一个分词参照上面的表格分词后的结果如下
| 文档数据 | 分词结果 |
|---|---|
| 苹果公司发布iPhone | 苹果公司发布iPhone |
| 地球引力起源于苹果 | 地球引力起源于苹果 |
| iPhone屏幕碎了 | iPhone屏幕碎了 |
| 我在苹果商店维修屏幕 | 我在苹果商店维修屏幕 |
| 我刚刚吃了苹果 | 我刚刚吃了苹果 |
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦