倒排索引是搜索引擎中最为核心的一项技术之一,可以说是搜索引擎的基石。可以说正是有了倒排索引技术,搜索引擎才能有效率的进行数据库查找、删除等操作。
1.倒排索引的思想
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(invertedindex)。
在搜索引擎中,查询词可以切分成若干个单词,所以对于搜索引擎中的倒排索引对应的属性就是单词,而对应的记录就是网页(也可以广泛地称为是文档)。所以,搜索引擎中的倒排索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词(属性)快速获取包含这个单词的文档列表(记录)。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。
2.“单词-文档矩阵”
单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图1展示了其含义。图1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系:
图1单词-文档矩阵
从纵向即文档这个维度来看,每列代表文档包含了哪些单词,比如文档1包含了词汇1和词汇4,而不包含其它单词。从横向即单词这个维度来看,每行代表了哪些文档包含了某个单词。比如对于词汇1来说,文档1和文档4中出现过单词1,而其它文档不包含词汇1。矩阵中其它的行列也可作此种解读。
搜索引擎的索引其实就是实现“单词-文档矩阵”的具体数据结构。可以有不同的方式来实现上述概念模型,比如“倒排索引”、“签名文件”、“后缀树”等方式。但是各项实验数据表明,“倒排索引”是实现单词到文档映射关系的最佳实现方式。
3.倒排索引的基本框架
单词和单词字典:搜索引擎的通常索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。
倒排列表:倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。
倒排文件:所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即被称之为倒排文件,倒排文件是存储倒排索引的物理文件。
搜索引擎中倒排索引大概流程框架:用户在搜索引擎搜索框输入查询词进行搜索时,搜索引擎会对查询词进行切词以及近义词匹配等操作,根据原始查询词得到一系列的单词列表。然后根据搜索引擎内部的字典来查询每个单词对应的倒排列表,从而定位到包含这个单词的网页或者说是文档。最后搜索引擎根据特定的网页排序算法将查询到的网页进行排序,通过前端将搜索结果展示给用户。下图2为倒排索引的主要流程:
图2倒排索引流程框架
4.单词字典
其实,我们通过上述倒排索引的流程也可以看出来,倒排索引的关键技术在于建立单词字典。
单词词典用来维护文档集合中出现过的所有单词的相关信息,同时用来记载某个单词对应的倒排列表在倒排文件中的位置信息。在支持搜索时,根据用户的查询词,去单词词典里查询,就能够获得相应的倒排列表,并以此作为后续排序的基础。
对于一个规模很大的文档集合来说,可能包含几十万甚至上百万的不同单词,能否快速定位某个单词,这直接影响搜索时的响应速度,所以需要高效的数据结构来对单词词典进行构建和查找,常用的数据结构包括哈希加链表结构(哈希存储的拉链法)和树形词典结构。
1)哈希拉链法
图3是这种词典结构的示意图。这种词典结构主要由两个部分构成:
主体部分是哈希表,每个哈希表项保存一个指针,指针指向冲突链表,在冲突链表里,相同哈希值的单词形成链表结构。之所以会有冲突链表,是因为两个不同单词获得相同的哈希值,如果是这样,在哈希方法里被称做是一次冲突,可以将相同哈希值的单词存储在链表里,以供后续查找。
图3哈希拉链法词典结构
在建立索引的过程中,词典结构也会相应地被构建出来。比如在解析一个新文档的时候,对于某个在文档中出现的单词T,首先利用哈希函数获得其哈希值,之后根据哈希值对应的哈希表项读取其中保存的指针,就找到了对应的冲突链表。如果冲突链表里已经存在这个单词,说明单词在之前解析的文档里已经出现过。如果在冲突链表里没有发现这个单词,说明该单词是首次碰到,则将其加入冲突链表里。通过这种方式,当文档集合内所有文档解析完毕时,相应的词典结构也就建立起来了。
在响应用户查询请求时,其过程与建立词典类似,不同点在于即使词典里没出现过某个单词,也不会添加到词典内。以图3为例,假设用户输入的查询请求为单词X,对这个单词进行哈希,定位到哈希表内的4号槽,从其保留的指针可以获得冲突链表,依次将单词X和冲突链表内的单词比较,发现单词X在冲突链表内,于是找到这个单词,之后可以读出这个单词对应的倒排列表来进行后续的工作,如果没有找到这个单词,说明文档集合内没有任何文档包含单词,则搜索结果为空。
2)树形结构
B树(或者B+树)是另外一种高效查找结构,图1-8是一个B树结构示意图。B树与哈希方式查找不同,需要字典项能够按照大小排序(数字或者字符序),而哈希方式则无须数据满足此项要求。
B树形成了层级查找结构,中间节点用于指出一定顺序范围的词典项目存储在哪个子树中,起到根据词典项比较大小进行导航的作用,最底层的叶子节点存储单词的地址信息,根据这个地址就可以提取出单词字符串。
5.倒排索引的实例
假设文档集合包含五个文档,每个文档内容如图4所示,在图中最左端一栏是每个文档对应的文档编号。我们的任务就是对这个文档集合建立倒排索引。
图4文档集合
中文和英文等语言不同,单词之间没有明确分隔符号,所以首先要用分词系统将文档自动切分成单词序列。这样每个文档就转换为由单词序列构成的数据流,为了系统后续处理方便,需要对每个不同的单词赋予唯一的单词编号,同时记录下哪些文档包含这个单词,在如此处理结束后,我们可以得到最简单的倒排索引(参考图3-4)。在图3-4中,“单词ID”一栏记录了每个单词的单词编号,第二栏是对应的单词,第三栏即每个单词对应的倒排列表。比如单词“谷歌”,其单词编号为1,倒排列表为{1,2,3,4,5},说明文档集合中每个文档都包含了这个单词。
图5简单的倒排索引
之所以说图5所示倒排索引是最简单的,是因为这个索引系统只记载了哪些文档包含某个单词,而事实上,索引系统还可以记录除此之外的更多信息。在单词对应的倒排列表中不仅记录了文档编号,还可以记载了单词频率信息(TF),即这个单词在某个文档中的出现次数,之所以要记录这个信息,是因为词频信息在搜索结果排序时,计算查询和文档相似度是很重要的一个计算因子,所以将其记录在倒排列表中,以方便后续排序时进行分值计算实用的倒排索引还可以记载更多的信息,图6所示索引系统除了记录文档编号和单词频率信息外,额外记载了两类信息,即每个单词对应的“文档频率信息”(对应图6的第三栏)。
图6带有单词频率、文档频率和出现位置信息的倒排索引
此外,除了上述信息,还可以在倒排列表中记录单词在某个文档出现的位置信息。
图6所示倒排索引已经是一个非常完备的索引系统,实际搜索系统的索引结构基本如此,区别无非是采取哪些具体的数据结构来实现上述逻辑结构。
有了这个索引系统,搜索引擎可以很方便地响应用户的查询,比如用户输入查询词“Facebook”,搜索系统查找倒排索引,从中可以读出包含这个单词的文档,这些文档就是提供给用户的搜索结果,而利用单词频率信息、文档频率信息即可以对这些候选搜索结果进行排序,计算文档和查询的相似性,按照相似性得分由高到低排序输出,最后为用户展示出搜索结果。
GoogleSEO系列-搜索引擎原理
Dota2Ti结束了,还是有些忧伤的,毕竟一年不如一年了,一鼓作气,再而衰…明年TI成绩可能还没有今年好,不破不立,中国队明年加油!
今天继续seo系列,总结下最近SEO方面的学习,要想做好SEO,肯定是要了解搜索引擎原理的,所以我先从这里入手学习,话不多说,上干货。
搜索引擎的搜索流程肯定是相当复杂的,对于我们来说最关心网站的排名逻辑,如果是应用的话我们最关心应用的排名,搜索引擎都有自己的爬虫程序,俗称蜘蛛。蜘蛛爬取就像用户访问浏览器,访问了之后网站会返回自己的Html代码,这时候蜘蛛程序会把这些存储到数据库,方便后续用来检索,当然搜索引擎都会使用多个蜘蛛来爬取的。
这里就涉及到了一个协议,蜘蛛会先访问网站根目录的robots.txt,这里面可以配置禁止蜘蛛爬取的文件目录,要谨慎配置,因为大家都希望自己的网站所有页面都被蜘蛛爬取到,这样用户通过搜索引擎才能搜索到。
大体了解了搜索原理我们差不多可以知道,如果蜘蛛程序经常爬取我们的网站,那我们的排名肯定会慢慢上升啊,有几种常见的方式吸引蜘蛛:
增加外链,越优质越好:如果知名的网站里面有我们网站的外链,可想而知我们的网站也不错,这里提供一个方法就是百科,百科是可以编辑的,大家可以经常去搜索各种字词,当发现某个字词的链接已经失效了,那么把自己网站的链接加上,这样我们就获得了一个来自百科的外链,是不是很机智。
首页权重最高,其次是距离首页近的:一个网站的首页是整个网站权重最大的,其次就是距离首页最近的,所以如果除了首页的其他页面哪个页面重要就把它放在距离首页最近。
更新频率高:如果你的页面经常有内容变动,那么蜘蛛程序就要不断的抓取你的页面把新的内容存储到数据库,应用也一样,内容经常更新,谷歌爬虫就会经常抓取你的应用内容,慢慢的就会增加排名。所以大家遇到的应用上线好久都没人下载,慢慢来,经常更新下内容,或许有帮助哈。
良好的页面结构:什么是页面结构?大家可以尝试在搜索框搜索一些字词,然后看下搜索结果都展示了什么,比如我搜索了机票:
首先是最大的标题,对应html标签的title,其次是域名,然后是描述,最下面是网页里面的Tab,所以我们的网站也要有这些结构,当然这几个是最基本的格式,还有其他格式,后面慢慢分析,比如:
以上是我最近学习到的一些方法,现在的搜索引擎也越来越复杂并且智能,比如我们搜索苹果,搜索引擎怎么知道我们是要搜苹果水果,还是苹果公司呢,我也非常好奇它会怎么判断,这个问题接下来慢慢去研究。
更多精彩文章关注公众号:jin广越
信息转载自网络,更多相关信息请点击:搜索营销http:///wlyx/ssyx/
相关文章
-
优胜教育:孩子明明很努力背单词,为什么总是记不住
很多家长经常抱怨孩子记单词难,反反复复总是记不住,今天优胜教育用一篇通俗易懂的文章告诉大家原因所在。,在这4个各具特色、优美恬静的少数民族村落中,有一个侗族寨子叫做黎平县双江乡黄岗村。,于是,因为注意力关注在这一个单词上,老外说的句子,一下子就滑过去了,啥也没听懂。
2024-03-21 21:40 -
淘宝运营如何提升词?怎么提升关键词排名?
新点的权重是非常小的,如果你去搜宝贝的搜大词基本上不知道多少页以后了,我一般采取两种方式,第一种就是搜标题全称,然后慢慢删词,看排名,删到5页左右能看到就用这个词,词越提升越短,就变大词了,排名也有了。,例:这就是主推词+品牌词词要多选几个不要每天那几个词在提升,那肯定是很不安全的,提升销量一个最重要的原则就是模拟真实购物场景。,最好是在你这个类目转化最高的那个时间点再往后延长那么1—2个小时。
2024-03-20 09:38 -
ebay标题优化规则,标题该如何写?
eBay标题怎么写:1、一定要使用能够明确描述你所售产品的关键词。,2、一定要把产品的情况写到标题里,这样潜在买家就能明白这是新款还是旧款,比如说NewWomen’sOversizedKnittedSweater.品牌名称(如果有的话)、型号、颜色和其他相关信息也要加上,比如BrandNewHugoBossMen’sBlackCoatJacketS/XL。,无论产品名称、动词还是形容词,只要拼错了
2024-03-19 17:29 -
wish标题优化技巧是什么?怎么优化?
只要你的标题能够具体表述产品,这样就足够了。,值得一提的是,卖家要注意一个小细节,标题上的每个单词首字母要大写,连词(and)、冠词(the)及少于5个字母的介词(in)等首字母不要大写。,当然了,Wish标题上能使用数字就尽量用数字别用单词,还有,标题上别出现类似!*$?这种的符号,至于为什么你懂得。
2024-03-19 17:14 -
如何优化wish标题?有哪些技巧?
只要你的标题能够具体表述产品,这样就足够了。,3.每个单词的首字母要大写,连词and、or、for,冠词the、a、an,少于5个字母的介词in、on、over、with等首字母不要大写。,比如卖大码服饰类的,会出现“Fat”这个词。
2024-03-19 17:13 -
wish的pb关键词写几个?怎么选词?
在wish平台上注册开店,开展跨境业务的过程中,有一些朋友在选择关键词的Hi好遇到了难题,不知道wish的pb关键词写几个,既然大家有这个疑问,那么接下来用一篇文章来帮助大家解决!,填写关键词1、选择相关性强的,热门但不相关的词会人工审核排除2、热门关键词(竞争程度高),如:dress和fashion,搜索量大,竞价非常高,这就需要产品是优质产品,不然转化可能少3、关键词选择要求:更相关,更具体,
2024-03-19 17:12 -
亚马逊标题改不了怎么办?如何经营亚马逊?
还有就是要减少标题违规,避免出现以下情况:1、大小写不规范。,3、出现带有攻击性、价格、运费、促销短语、特殊符号等禁止使用的词语。,1、每个单词的首字母要大写,但是有些单词首字母不要大写:连词:and,or,for;冠词:the,a,an;少于5个字母的介词:in,on,over,with。
2024-03-19 17:02 -
淘宝补单关键词如何选择?选择技巧有哪些?
想要补单更加安全有效果,需要选择合适的补单关键词,但是很多卖家朋友没有掌握选择关键词的方法和技巧,那么淘宝补单关键词怎么选取?有哪些技巧和方法呢?今天带来了实用的选词技巧跟大家一起分享交流!第一种类型:分词。,缺点:投资成本太高,不容易展示自己的店铺。,缺点:对于不会选词的卖家来说,这是浪费钱。
2024-03-19 15:00 -
淘宝刷搜索关键词去哪里刷?如何寻找关键词?
这两种策略在一定程度上可以同时使用,但建议初学者选择一种,因为早期的目的应该明确,否则后期会迷失方向。,系统会推荐一些词,通常根据搜索量和相关性来选择。,这样的词语适合准确定位产品特征,而且转换率往往相对较高。
2024-03-19 14:37
热门标签
-
头条搜索之站长平台索引量介绍,与2个常见问题 用Python和OpenCV构建属于自己的图像搜索引擎
2024-03-21 18:08
-
如何成为百度搜索的精选摘要? 关注搜索算法 外链的重要性不再
2024-03-21 18:08
-
世界那么大,何必用百度?搜索引擎汇总,总有一款适合你 SEO优化师,不会告诉你的谷歌搜索引擎规则
2024-03-21 18:08
-
搜索引擎各大站长平台汇总 搜索引擎讨厌的网站
2024-03-21 18:08
-
SEO优化中品牌词负面信息压制方法 什么是搜索引擎本地算法,它对SEO有那些影响?
2024-03-21 18:08
-
Tag标签使用在seo优化中的作用 优化SEO博客帖子的6种方法
2024-03-21 18:08
-
什么是SEO地域性排名 SEO算法演变与破解
2024-03-21 18:08
-
2019年SEO内部链接终极指南 优质锚文本链接对网站SEO还有这些好处
2024-03-21 18:08
-
国外google seo大牛分析了100万个搜索结果得出的影响排名的因素 SEO和SEM有什么区别?
2024-03-21 18:08
-
谷歌SEO中的常见术语词汇解释 从搜索引擎遇到的挑战来学习SEO
2024-03-21 18:08
-
SEO:浅析网站内容最佳更新频率 【Google优化】SEO优化稳定关键词网站排名
2024-03-21 18:08
-
seoer如何创建和管理高质量关键词词库? 不会站群SEO?看看他是怎么做的!
2024-03-21 18:08
-
哪种类型页面的SEO排名在整个网站最好? 技术手段优化seo注意细节
2024-03-21 18:08
-
带你迅速了解SEO优化知识,新手入门必读 百度SEO:为什么要关注“网站抓取频率”?
2024-03-21 18:08
-
网站SEO优排不稳定的原因 SEO网页标题title规范
2024-03-21 18:08
-
什么是SEO关键词优化呢?关键词优化有什么技巧? 企业决策者需要了解的SEO基础知识
2024-03-21 18:08
-
如何"引诱"蜘蛛抓取SEO的技巧,你知道吗? SEO团队标准配置是怎么样的?
2024-03-21 18:08
-
百度SEO与谷歌SEO的区别 你了解的SEM和SEO究竟是什么样子的?
2024-03-21 18:08
-
seo具体怎么优化 网站SEO外链建设办法
2024-03-21 18:08
-
什么是蜘蛛池?蜘蛛池对SEO有什么影响? SEO干货:什么是百度霸屏?如何操作达到霸屏?
2024-03-21 18:08