澳门新葡亰网址下载Solr&ElasticSearch原理及应用

by admin on 2020年2月27日

微软表示,SPTAG 库迄今已对超过 1500
亿条数据进行了编目,包括单个单词、字符、网页代码段和完整查询。

在网络搜索引擎的后续发展中,还出现了Topic-Sensitive
PageRank算法,其思想主体与PageRank算法是相同的,只不过通过cookie或注册信息将用户感兴趣的内容权重提高,这样便解决了个性化搜索排序的问题。

另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。随着搜索引擎索引规则发生很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。

Bing 团队期望开源 SPTAG
可用于构建可识别基于音频片段所说语言的应用,或用于让用户拍摄植物照片并识别属和物种的服务。

0 引言

当然,矢量搜索本身并不是一个新想法,微软所做的是将这一概念应用于深度学习模型。

【引用】:

5.Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用

该库现已开放使用,并提供构建和搜索这些分布式矢量索引的所有工具。

Vi = (1 – b)MVi-1 + e*(b/N)

1.概念

首先,团队采用预先训练的模型并将数据编码到矢量中,其中每个矢量代表一个字或像素。然后使用新的
SPTAG
库生成向量索引。随着查询的进入,深度学习模型将该文本或图像转换为向量,该库紧接着就能在索引中找到最相关的向量。

图论在日常生活中的应用有很多,分为有向图与无向图,而其最直观的应用就是地图了。将上海及周边的长三角城市作为图的节点,高速公路作为连接节点的各条边。

语言处理,类似于索引阶段的语言分析处理部分,将包含数量和时态等属性的单词转变为它的原型词。例:“bananas”的原型词为“banana”,“gone”或“went”的原型词为“go”。

仅在几年前,网络搜索很简单,用户输入几个关键词并浏览结果页面。
今天,相同的用户可能会在手机上拍照并将其放入搜索框中,或使用智能助手提问,而无需亲自触摸设备。他们也可能会输入一个问题并期待一个实际的答复,而不是一个可能答案的页面列表。

其中b为一个较小的常数,e为N维单位向量。这样,我们就将原来不平滑的结果平滑化了。

2.3.2倒排索引

澳门新葡亰网址下载 1

我们初始了各个网页的排名为1/4,但这仅仅是初始值,实际网页本身的排名并不相等。因此,我们就将新的向量Mv进行迭代,令Vi
= M * Vi-1
。可以证明v最终将是收敛的,当Vi无限接近于v即Vi与Vi-1差异非常小时,我们就认为Vi是搜索结果的最终排名。

影响一个词在一篇文档中的重要性主要有两个因素:

微软刚刚宣布开源一项
Bing 搜索背后的关键算法——SPTAG,它使 Bing 能够快速将搜索结果返回给用户。

我们可以看到,一个用户从A跳转到B、C、D的概率各为1/3。设一共有N个网页,则可以组织这样一个N维矩阵:其中i行j列的值表示用户从页面j转到页面i的概率。这样一个矩阵叫做转移矩阵,矩阵表示如下:

3.2.1分析

SPTAG (Space Partition Tree And
Graph)是分布式近似最近邻域搜索(ANN)库,为大规模矢量搜索场景提供高质量矢量索引构建、搜索和分布式在线服务工具包。利用
SPTAG 算法作为开源 Python 库的核心,Bing
能够在几毫秒内搜索数十亿条信息。

在现代搜索引擎中,爬虫的算法不会是纯粹的广度优先搜索,也不会是纯粹的深度优先搜索。现代搜索引擎由一个被称之为“调度系统”的逻辑解决网络爬虫爬取网页优先级的问题,在应用中,也往往体现了将广度优先搜索与深度优先搜索混合使用的意味。

搜索是面向用户接口的主要操作,对检索的处理是搜索技术是否能够达到预期效果的重要一步。

参考:TechCrunch、venturebeat

这里的布尔索引与数据库中的位图索引概念相似。以数据库位图索引为例,如下图所示:

1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至百亿级的网页数量,面对如此海量数据,使得数据库系统很难有效的管理。

“Bing 每天处理数十亿个文档,现在的想法是将这些条目表示为向量,并搜索这个
1000 亿以上向量的巨大索引,以便在 5 毫秒内找到最相关的结果”。

 

执行full-text域搜索时,需要用到分析器,但执行精确值搜索时,查询过程不会分析查询字符串而是直接进行精确值匹配。

Values

R0

R1

R2

R3

R4

Yellow

1

0

0

1

0

Red

0

0

1

0

0

Blue

0

1

0

0

1

4.词组在文档中出现的顺序在向量形式中无法表示出来。

摘要

1)Term Frequency :即此Term在此文档中出现了多少次。tf越大说明越重要。

  1. 《浅析PageRank算法》张洋 著。

当两个向量之间的夹角,即余弦值越小,我们就人为他们的相关性越大,所计算得到的相关性得分也就越高。相关性的分值计算公式如下:通过将关键词文档与检索结果集中的各文档的打分分值,进行降序排序,就得到了这个关键词检索后的具有相关性排序的结果列表。2.1对查询内容进行词法分析、语法分析、语言处理

我们将互联网视作一张大图,这样每一个网页就可以看做图上的节点,而超链接则可以视作图上的边,互联网就与图论相结合了。以一个爬虫为例,爬虫从诸如雅虎、新浪等门户网站为原点s,访问、下载并分析这家网站的邮件等网页,有能找到其他相连的网页。让计算机不停的计算下去,在理论上就能下载整个互联网。在爬虫抓取网页的过程中,也有极大可能会遇到抓取到相同网页的情况。现代搜索引擎是这样解决的:构建一个HASH表,在HASH表中记录已经被抓取过的网页。

3.检索器的功能是根据用户的查询在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。

在现实世界的互联网搜索中,往往能够在相当短的时间内查询到所需要的搜索结果。比如,在google中搜索“京东”,在0.17秒内便能够搜索到171,000,000条结果。搜索引擎能够在如此短的时间内查询到如此多的结果,依靠两方面的技术,一是分布式计算技术,该技术解决了大数据高速并行运算的难题,另外则是布尔索引构建技术。

三、Lucene

假设在一张数据表中存在5行数据,我们对在数据库索引的创建过程中,分别对这5行数据的值进行解析。从上图可以看到,这5行数据分别代表了黄色、红色、蓝色,这样经过解析并代码化,第一行数据则可以转换为100,。同理,第二行可以转换为001、第三行可以转换为010,第四行、第五行以此类推。如果我们想要获取数据表中代表黄色的数据项,仅需要查找索引为100的数据即可。而假设我们想要查询黄色||红色的数据,由110
= 100 || 010可知我们仅需要寻找索引第一、二位均为1的数据即可。

2.检索词组必须与文档中出现的词组精确匹配;词语子字串可能会导致“假阳性”匹配。

 

Google的PageRank根据网站的外部链接和内部链接的数量和质量来衡量网站的价值。PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多。这个就是所谓的”链接流行度”–衡量多少人愿意将他们的网站和你的网站挂钩。PageRank这个概念引自学术中一篇论文的被引述的频度–即被别人引述的次数越多,一般判断这篇论文的权威性就越高。

 真实的互联网非常稀疏,将其化为转移矩阵,其结果也将是稀疏矩阵。从矩阵论知识可以推断,极度稀疏的转移矩阵迭代相乘可能会使得向量v变得非常不平滑,即一些节点拥有很大的rank,而大多数节点rank值接近0。为了解决这一问题,我们需要对矩阵进行平滑处理。平滑处理的基本思想是加入“心灵转移”。所谓心灵转移,就是我们认为在任何一个页面浏览的用户都有可能以一个极小的概率瞬间转移到另外一个随机页面。

搜索引擎将爬虫爬取到的可识别存储信息存储到原始页面数据库中。其中的数据是还未经处理的信息,还不具备数据的有效性,因此还不能称之为数据。

3 PageRank算法——矩阵的应用

2)维基百科:启动以elasticsearch为基础的核心搜索架构。

2.《算法导论》Thomas H. Cormen等著 机械工业出版社;

Ps:走过的路,每一步都算数,沉淀我所学习,累积我所见闻,分享我所体验;

1 索引的构建——布尔代数的应用

2.1爬行

在当今的主要搜多引擎都是对所有词进行索引,也因此对于搜索引擎,索引的数量是海量的。对于如此大量的索引存储与计算将是一个难题,现代搜索引擎主要依赖于分布式计算,在这里不做赘述。

更新策略有四种:完全重建、再合并策略、原地更新策略以及混合策略。

广度优先搜索(BFS)是在给定图和一个特定的源顶点s的情况下,系统的探索图中的边,以期发现可从s到达的所有顶点。

此过程会由索引组件(Indexer)将上一步的词Term文档Document之间建立索引关系,从而形成索引库。在这个过程中索引组件会对所有的词进行创建词典,排序,和合并相同词等操作,从而保证可检索词的唯一性。

由于M的第一行即是A、B、C、D转向A的概率,那么我们用M*V即可得到网页的排名:

应用场景:热点图,交通情况地理信息图等需要实时数据搜索和显示的场景,数据更新频繁的场景等。

我们假设有四张网页,他们的联通关系可以用如下的有向图表示:

索引创建过程中的页面分析,特别是分词为主要时间开销。算法的第二步相对很快。这样创建索引算法的优化就集中在分词效率上了。

在实际问题中,我们通常会求解这样一个问题:我们从上海出发,如何依次访问图上长三角的城市。解决此问题,一种方式称为“深度优先搜索(DFS)”,另一种方式成为“广度优先搜索(BFS)”。

3.搜索引擎检索到的信息是程序爬虫自动获取的,没有或少有过滤机制,而目录索引有大量的人为审查过滤机制,因而信息目录构建也相对缓慢。

2 网络爬虫的实现——图论的应用

2)其次,将各Term正规化为标准格式以提升其“可搜索度”。

4 总结

名词关系

在互联网技术飞速发展的今天,数学手段越来越多的被用于解决算法优化、算法设计等复杂的问题。本总主要浅析了布尔代数、图论及矩阵在互联网搜索引擎中的运用,这三个知识点也基本涵盖了互联网搜索引擎建立的主要思想。布尔代数的逻辑运算能够很好的解决数据索引构建的问题,图论的算法对数据挖掘路径提供了较为高效的思想,而矩阵的引入则将算法模型化,利用数学模型关联的数学知识,有依据的解决相关问题。这些特点能够为今后的工作提供指导依据,如在冶金行业,PageRank算法就是解决制程优选的很好思路,运用矩阵将制程模型化,依据排序推选出最优的制程路径。总之,数学手段加入行业知识,其解决问题的潜在重要性将是不言而喻的。

除了爬取Web之上的资源,可获取的数据库,文本文件,PDF等可解析出文字形成有效数据的信息资源都可以成为爬取的资源。当然,针对不同的文件格式和文档编码,都需要有相对应的文件解析和预处理器配合,才能实现信息的爬取。

深度优先搜索(DFS)所遵循的搜索策略是尽可能“深”的搜索一个图。在深度优先搜索中,对于最新发现的顶点,如果它还有以此为起点而未探测到的边,就沿此边继续探测下去。当顶点v的所有边都已经被探寻过后,搜索将回溯到发现顶点v有起始点的那些边。这一过程一直进行到已发现从源顶点可达的所有顶点时为止。如果还存在未被发现的顶点,则选择其中一个作为源顶点,并重复以上过程。整个过程反复进行,直到所有的顶点都已被发现时为止。

1.3倒排索引构建索引库

在20世纪90年代,雅虎公司、DEC公司等科技企业都对此作出了努力,但效果不尽人意。真正的跨时代的数学模型由google的创始人佩奇和布林提出,该算法被称作PageRank算法。PageRank算法的核心为民主表决。在互联网上,如果一个网页被很多其他的网页所链接且其他网页的质量本身就很高,说明它收到普遍的承认和信赖,那么它的排名就应该靠前。

合并法:

随着科技的进步,网上冲浪已进入了千家万户。在我们畅游网络世界中,以google、百度、AOL等为代表的搜索引擎也成为广大网民经常使用的工具。通过输入关键字,搜索引擎往往能够在相对较前的位置显示我们需要查找的网页。在构建搜索引擎的过程中,搜索引擎所处理的主要涉及三方面的内容:1.索引的构建——用于在海量资源中找到符合关键字的网页;2.网络爬虫技术——用于构造海量网页资源库;3.排序技术(即本文将阐述的PageRank算法)——用于将最可能符合用户要求的网页排列在搜索结果的前部。在下面的章节中,将主要简单介绍这三方面的内容。

全文搜索引擎:国外具代表性的有Google、Fast/AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut等,国内著名的有百度。

本文主要阐述了矩阵在互联网搜索中的应用,对互联网搜索引擎的基本原理进行了解析。所阐述的内容包含了互联网搜索引擎索引构造技术、网络爬虫技术及PageRank算法,涉及的数学知识涵盖了布尔代数、图论和矩阵论。

处理网页(Transformation)

1.《数学之美》吴军 著 人民邮电出版社;

把原始待索引文档内容交给分词组件(Tokenizer),分词组件通过Tokenize过程将文档分解为词汇单元(Token)

设各个网页的初始投票权相同,这样就可以得到向量v:

3)对单词生成倒排列表

3.《海量数据库解决方案》李华植 著 电子工业出版社;

分析过程有两个步骤的操作组成,都由指定的分析器(Analyzers)完成:

在加入“心灵转移”后,向量的迭代公式变为:

一条记录的水平反向索引包含每个引用单词的文档的列表。

 

所谓的full-text查询通常是指在给定的文本域内部搜索指定的关键字,但搜索操作需要真正理解查询者的目的。为了完成此类full-text域的搜索,ES必须首先分析文本并将其构建成为倒排索引(inverted
index),倒排索引由各文档中出现的单词列表组成,列表中的各单词不能重复且需要指向其所在的各文档。

 

3.为其他平台系统提供了具有rest风格的原生java api。也有hadoop的依赖包

对于网络爬虫,具体使用深度优先算法还是广度优先算法也是制作网络爬虫程序经常遇到的问题。就理论而言,在不考虑时间因素、互联网静态不变的前提下,这两种算法抓取全部网页的时间大致相同。就显示而言,我们则需要根据实际情况选择较优的算法。而我们的目标也转变为了“如何在有限的时间内最多的爬下最重要的网页”。如果我们做制作的爬虫非常小,那么门户网站的首页自然而然便是最重要的网页。依次类推,门户网站上直接能够链接到达网页则为相对较次要些的网页。综上所述,在软硬件资源相对有限的情况下,广度优先搜索是网络爬虫算法一个不错的选择。而深度优先搜索在网络爬虫中的应用更多的服务器整体爬取网页的情况。在服务器爬取网页的过程中,由于下载服务器和网站的通讯服务器建立连接需要时间,所以下载服务器往往是一个网站下载完毕之后再下载第二个网站,而非并行的下载所有网站。这一点和深度优先搜索是很类似的。

3.深入知识讨论

 

filters):转换字符、移除词项(如移除a、an、of及the等)或者添加词项;

 

一、综述

通过以上两个章节介绍的技术,我们已经可以顺利的建立搜索引擎的资源库及根据关键字获取所要查找的页面集合。但问题接踵而来,我们查找到的页面集合成千上网、页面质量参差不齐,如何能够让我们第一眼看到我们所期望的网页成了搜索引擎应当解决的问题。

五、ElasticSearch

类比到互联网搜索引擎,引擎对资源库中的所有关键词构造索引。以关键字“原子能”为例,“原子能”对应的索引为0100010000000……,则在第二、第六个网页中包含这个关键字。如果“应用”对应的索引为0111100000000……,那么当同时搜索“原子能”与“应用”时,我们将两个索引相与,可得0100000000000……,即第二个网页为所需查询的网页。

索引库中包含了一下几列:词,文档频率(Document
Frequency),文档中则拥有文档ID(Document
ID),频率(Frequency)。其中:

 

Solr&ElasticSearch原理及应用

 

词汇单元Token经过此过程处理后的到词(Term)

依据上一章节的内容,搜索引擎已经能够实现从海量资源库中获取关联网页,那么海量资源库是如何构建的呢?这主要依赖于网络爬虫,而网络爬虫的基本模型是图论。

排名作为搜索引擎面向用户接口的重要一环以及一个可获得利益点,在百度的竞价排名规则中表现明显。而Google则遵循其“Don’t
be
evil”的组织文化原则,根据搜索结果提供更大可能对用户有用的广告产品来获取收益,从而保证了自身搜索引擎排名的公正性和有用性。

一个分析器通常由三个组件构成:字符过滤器(Character
filters)、分词器(Tokenizer)和分词过滤器(Token filters)组成。

因此,在相关性排序时,可以利用其它的数学技术如奇异值分解或词汇数据库的方式对算法局限进行弥补。

当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度、出现的位置、频次、链接质量——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。这种引擎的特点是搜全率比较高

3.2.2分析器

倒排列表用来记录有哪些文档包含了某个单词。一般在文档集合里会有很多文档包含某个单词,每个文档会记录文档编号,单词在这个文档中出现的次数及单词在文档中哪些位置出现过等信息,这样与一个文档相关的信息被称做倒排索引项,包含这个单词的一系列倒排索引项形成了列表结构,这就是某个单词对应的倒排列表。

而匹配搜索之后我们需要根据关键词和各文档之间的相关性进行排序,这时候之前对关键词构建的索引又派上了用场。这里我们就可以使用空间向量模型算法来评价文档结果集中的文档的索引和关键词索引之间的相关性了。

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取、转换(transform)、加载至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

关于排名规则与指标,还有更多其它考虑因素,如网站与网站内容的符合程度等,其中还涉及到反黑帽SEO作弊技术的相关算法规则。

2)数据操作简单:搜索引擎使用的数据操作简单,一般而言,只需要增、删、改、查几个功能,而且数据都有特定的格式,可以针对这些应用设计出简单高效的应用程序。而一般的数据库系统则支持大而全的功能,同时损失了速度和空间。最后,搜索引擎面临大量的用户检索需求,这要求搜索引擎在检索程序的设计上要分秒必争,尽可能的将大运算量的工作在索引建立时完成,使检索运算尽量的少。一般的数据库系统很难承受如此大量的用户请求,而且在检索响应时间和检索并发度上都不及我们专门设计的索引系统。

2.3.2.2更新策略

澳门新葡亰网址下载 2澳门新葡亰网址下载 3澳门新葡亰网址下载 4

在应用程序中对象很少只是一个简单的键和值的列表。通常,它们拥有更复杂的数据结构,可能包括日期、地理信息、其他对象或者数组等。

4.主要特性:

原理

1.2.2目录索引与搜索引擎的融合

查询执行过程通常要分成两个阶段,分散阶段合并阶段。分散阶段是向所查询的索引中的所有shard发起执行查询的过程;合并阶段是将各shard返回的结果合并、排序并响应给客户端的过程。

这个过程,其实就是寻找在两篇文档中,哪些词对文档之间关系的更重要,哪些最重要,主要文档中的词在待匹配文档中出现频率的高低的过程,这个判断关键词的Term对文档的Term的重要性的过程称为计算词的权重(Term
Weight)的过程。

澳门新葡亰网址下载 5

单个节点可以作为一个运行中的Elasticsearch的实例。而一个集群是一组拥有相同cluster.name的节点,他们能一起工作并共享数据,还提供容错与可伸缩性。(当然,一个单独的节点也可以组成一个集群)

Replica shard是Primary Shard的副本,用于冗余数据及提高搜索性能。

其中Tokenize过程包含这些操作:

搜索引擎现主要为全文索引和目录索引。垂直搜索引擎由于其在特定领域的更高的用户体验,以及更小的硬件成本,也开始逐渐兴起。

利用倒排索引方式构建而成的单词与文档的映射,其中文档部分的结构就是倒排列表

精确值(Exact
values)就是指数据未曾加工过的原始值,而Full-text则用于引用文本中的数据。

1)将文档分析成单词term,

3)SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务”。

1.3垂直搜索引擎

归并法,即每次将内存中数据写入磁盘时,包括词典在内的所有中间结果信息都被写入磁盘,这样内存所有内容都可以被清空,后续建立索引可以使用全部的定额内存。

2.原理示意图

2.倒排索引

也同样把关键词看做一个文档,用向量来表示它们:

2.2搜索索引,得到符合语法树的文档集合

2.1概念

1)就使用场景来说,当执行full-text查询或查询结果依赖于相关度分值时应该使用查询DSL,当执行精确值(extac-value)查询或查询结果仅有“yes”或“no”两种结果时应该使用过滤DSL。

检索服务

一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。

实际应用中,相关性的计算因素不只有文档分词权重,在商业化运营中,如百度就发展出了相当丰富的如竞价排名的更多的相关性计算因素。

抓取网页(Extraction)

索引的构建相当于从正排表到倒排表的建立过程。当我们分析完网页时,得到的是以网页为主码的索引表。当索引建立完成后,应得到倒排表,流程描述如下:

相关性处理详见“技术原理核心-控件向量模型”一节。

1.1索引文档词条化(文档Document-词汇单元Token)

通过构建关键词和文档之间的关系,在查询关键词的过程中能够快速定位文档位置。

Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。

倒排索引(Inverted
index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。

1.1集群-节点

3.3ES的数据查询

Primary shard用于文档存储,每个新的索引会自动创建5个Primary

ES的数据可被广义的分为两种类型:“types:exact”和“full-text”。

2.构建适应于不同规模的应用的体系结构,在此之上实现分布式搜索。

澳门新葡亰网址下载 6

1.每个Primary shard默认配置了一个Replica

3.Solr官方提供的功能更多;而Elasticsearch本身更注重于核心功能,高级功能多由第三方插件提供;

早期的搜索引擎是把因特网中的资源服务器的地址收集起来,由其提供的资源的类型不同而分成不同的目录,再一层层地进行分类。人们要找自己想要的信息可按他们的分类一层层进入,就能最后到达目的地,找到自己想要的信息。这其实是最原始的方式,只适用于因特网信息并不多的时候。

字符过滤器(Character

搜索引擎分类部分提到过全文搜索引擎从网站提取信息建立网页数据库的概念。搜索引擎的自动信息搜集功能分两种。

3.语义敏感度不佳;具有相同的语境但使用不同的词组的文档不能被关联起来,导致“假阴性匹配”。

ES的查询语句称为Query DSL,它分为两种:查询DSL(query
DSL)
过滤DSL(filter

词法分析,即区分查询内容中的单词与关键字。关键字例如:“and”,“not”等。

这个简单索引功能可以用于小数据,例如索引几千个文档。然而它有两点限制

2)再合并策略:当新增文档进入系统,解析文档,之后更新内存中维护的临时索引,文档中出现的每个单词,在其倒排表列表末尾追加倒排表列表项;一旦临时索引将指定内存消耗光,即进行一次索引合并,这里需要倒排文件里的倒排列表存放顺序已经按照索引单词字典顺序由低到高排序,这样直接顺序扫描合并即可。其缺点是:因为要生成新的倒排索引文件,所以对老索引中的很多单词,尽管其在倒排列表并未发生任何变化,也需要将其从老索引中取出来并写入新索引中,这样对磁盘消耗是没必要的。

每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。创建索引时,用户可指定其分片的数量,默认数量为5个。

固然,创建倒排索引时需要用到分析器,但传递搜索字符串时也可能需要分析器,甚至还要用到与索引创建时相同的分析器才能保证单词匹配的精确度。

2)Filter

1.3索引的概念

Elasticsearch是面向文档的,意味着它存储整个对象或文档。Elasticsearch不仅存储文档,而且索引每个文档的内容使之可以被检索。在Elasticsearch中,你对文档进行索引、检索、排序和过滤,而不是对行列数据。这是一种完全不同的思考数据的方式,也是Elasticsearch能支持复杂全文检索的原因。

2)Document Frequency

知道了搜索所使用的空间向量模型原理后,我们知道,要在搜索结果完成后进行相应的匹配,那么在构建索引和搜索时构建索引的过程中,使用的分词语法规则必须是统一的,一致的。在ES中,这个过程叫做正规化(Normalization)。通过将数据统一为一个标准格式,从而方便搜索匹配以及结果相关性的衡量。

  1. ES集群可由多个节点组成,各Shard分布式地存储于这些节点上。

1.2.1目录索引与搜索引擎的不同

一个单词的水平反向索引又包含每个单词在一个文档中的位置。

垂直搜索引擎为2006年后逐步兴起的一类搜索引擎。不同于通用的网页搜索引擎,垂直搜索专注于特定的搜索领域和搜索需求(例如:机票搜索、旅游搜索、生活搜索、小说搜索、视频搜索、购物搜索等等),在其特定的搜索领域有更好的用户体验。相比通用搜索动辄数千台检索服务器,垂直搜索具备需要的硬件成本低、用户需求特定、查询的方式多样等优点。比较适合中小型公司和创业型公司的搜索服务。

一个Elasticsearch集群可以包含多个索引,相应的每个索引可以包含多个类型。这些不同的类型存储着多个**文档,每个文档又有多个属性。**

1.计算权重(Term Weight)的过程

一般会进行的预处理包括但不限于:提取文字,特定语种分词,去除停止词,消除噪音(如版权声明文字、导航条、广告等……),链接关系计算,特殊文件处理等。

2.3.2.1构建方法

2.索引器的功能是理解搜索器所搜索的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表。

1.不适用于较长的文档,因为它的相似值不理想(过小的内积和过高的维数)。

词,即为构建索引库后要检索的关键词。而它对应的文档频率则表明这个词在多少篇文档中出现了。

2)使用hash去重单词term

四、Solr

我们把文档看做一系列Term,通过和关键词文档的Term的计算,每一个词都获得了一个权重,通过空间向量模型算法,根据这些权重,来为不同词与文档的相关性计算打分。

目录索引也称为:分类检索,是因特网上最早提供WWW资源查询的服务,主要通过搜集和整理因特网的资源,根据搜索到网页的内容,将其网址分配到相关分类主题目录的不同层次的类目之下,形成像图书馆目录一样的分类树形结构索引。目录索引无需输入任何文字,只要根据网站提供的主题分类目录,层层点击进入,便可查到所需的网络信息资源。

4.用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。

Extraction-Transformation-Loading的缩写,中文名称为数据提取、转换和加载。

将经过词法分析、语法分析、语言处理过后的语法树,在构建好的索引库中进行随机查询,初步得到所有符合语法树的文档集合。

集群-索引-类型-文档-属性:

随着yahoo!的出现,搜索引擎的发展也进入了黄金时代,相比以前其性能更加优越。现在的搜索引擎已经不只是单纯的搜索网页的信息了,它们已经变得更加综合化,完美化了。以搜索引擎权威yahoo!为例,从1995年3月由美籍华裔杨致远等人创办yahoo!开始,到现在,他们从一个单一的搜索引擎发展到现在有电子商务、新闻信息服务、个人免费电子信箱服务等多种网络服务,充分说明了搜索引擎的发展从单一到综合的过程。

它包括信息搜集、信息整理和用户查询三部分。

1.4分片和副本

倒排列表就是文档编号DocID,没有包含其他的信息(如词频,单词位置等),这就是简单的索引。

向ElasticSearch发起查询操作有两种方式:一是通过RESTful request
API传递查询参数,也称“query-string”;另一个是通过发送REST request
body,也称作JSON格式。而REST形式的请求保证了ES可以做到跨平台和跨语言。

Solr和Elasticsearch都是基于Lucene实现的。

1)需要有足够的内存来存储倒排表,对于搜索引擎来说,都是G级别数据,特别是当规模不断扩大时,我们根本不可能提供这么多的内存。

在爬取页面的过程中,爬虫也会对数据进行初步的重复性检测,根据相应的权重以及重复比有选择的爬取页面信息,并忽略被大量转载、抄袭、复制的内容。

3.1ES的精确值(Exact Values)和全文(full-text)类型

1.2目录索引

shard,但也可以配置多个,且其数量可动态更改。ES会根据需要自动增加或减少这些Replica
shard的数量。

6.权重是直观上获得的而不够正式。

反过来想,根据面向文档的思想,其实用户界面输入的关键词也是一篇文档。那么当我们使用构建索引的操作对关键词进行分词构建索引之后,通过这些索引去搜索匹配索引数据库中的索引,就可以找到相对应的结果了。

澳门新葡亰网址下载 7

2.搜索引擎不考虑网站分类,根据关键词网站频率构建搜索索引;而目录索引需要甄别网站的分类目录位置。

分词器(Tokenizer):将文本切分为独立的词项;简单的分词器通常是根据空白及标点符号进行切分;

DSL计算及过滤速度较快,且适于缓存,因此可有效提升后续查询请求的执行速度。而query
DSL不仅要查找匹配的文档,还需要计算每个文件的相关度分值,因此为更重量级的查询,其查询结果不会被缓存。不过,由于倒排索引方式的缘故,一个仅返回少量文档的简单query或许比一个跨数百万文档的filter执行起来并不显得更慢

默认的,一个文档中的每一个属性都是被索引的和可搜索的。一个没有倒排索引的属性是不能被搜索到的。

1.将文档分成单词

当一个Term在某篇文档中出现的次数越多,即tf越大,说明文档的主要工作都是在介绍或者重点引用这个概念,那么他们之间的相关性也就越高,权重越大。而当很多的文档都包含这一个Term时,这个Term对文档的区分性就越差,即通过df指标非常大的Term更不能区分出文档之间的相关性,所以表现为权重越不重要。

2.2应用背景

2.工作原理

但是这样的一种排名机制导致后来出现了SEO中的链接销售和交换策略,市场泛滥的同时,也让搜索的准确率不断下降。因此Google通过修改规则,对相关度不高的网页中链接,以及缺乏内容的链接工厂(Link
Farm)进行了排除。同时降低了PR值得更新频率,一般一年更新四次,抑制了互联网链接的不正常发展。

Sorl/Lucene采用的是方向索引方式,即从关键词到文档的映射过程。

排名算法规则和方式自诞生以来就广受争议,站在成本角度考量,要维持一个普适性强的搜索引擎的正常良好运作,需要巨大的人力和机器成本,如果不能从中获取收益,对运行维护公司来说将是巨大的损失。但是在互联网时代虚假消息横行的时代,反虚假、反捏造信息的责任更多的放到了作为互联网网页入口的搜索引擎的身上,促使它们不断的更改自己的算法,添加新的规则,来让用户得到真实有效的信息。

ES的“分片”机制可将一个索引内部的数据分布地存储于多个节点,它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每一个物理的Lucene索引称为一个分片。

2.3.1倒排列表

二、搜索引擎

用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。

语法分析,通过语法分析将查询单词与关键字区分开来之后,根据定义好的语法规则,形成语法树。

1.1全文搜索引擎

DSL)。

ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

搜索引擎抓到网页后,还要做大量的预处理工作才能提供检索服务。其中,最重要的就是提取关键词,建立索引文件。其他还包括去除重复网页、分析超链接、计算网页的重要度等。

2.2抓取存储

1)首先,将文本切分为Term以适合构建倒排索引;

1.搜索器的功能是在互联网中漫游,发现和搜集信息。

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted
index)。

2)算法是顺序执行,不便于并行处理。

1)2013年初,GitHub抛弃了Solr,采取ElasticSearch来做PB级的搜索。“GitHub使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码”。

2.4排名

实际的搜索引擎系统中,并不存储倒排索引项中的实际文档编号,而是代之以文档编号差值(D-Gap)。文档编号差值是倒排列表中相邻的两个倒排索引项文档编号的差值,一般在索引构建过程中,可以保证倒排列表中后面出现的文档编号大于之前出现的文档编号,所以文档编号差值总是大于0的整数。之所以要对文档编号进行差值计算,主要原因是为了更好地对数据进行压缩,原始文档编号一般都是大数值,通过差值计算,就有效地将大数值转换为了小数值,而这有助于增加数据的压缩率。

:即有多少文档包含次Term。df越大说明越不重要。

索引:索引一个文档就是存储一个文档到一个索引中以便它可以被检索和查询到。这非常类似于SQL语句中的INSERT关键词,除了文档已存在时新文档会替换旧文档情况之外。

使用厂商:Dell、ebay、Fackbook、netflix等。

简单法:

2.3概念辨析

5.假定词组在统计上是独立的。

Shard有两种类型:primary和replica,即主shard及副本shard。

我们把文档中的词的全助攻看做一个向量:

搜索总体上划分为两个过程索引搜索。

1.相关概念

这里的分词(Tokenization)以及正规化(Normalization)也称为分析(Analysis)。

搜索引擎(Search
Engine)
是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。

3.
ES可自动在节点间按需要移动shard,例如增加节点或节点故障时。简而言之,分片实现了集群的分布式存储,而副本实现了其分布式处理及冗余功能。

随着因特网信息按几何式增长,出现了真正意义上的搜索引擎,这些搜索引擎知道网站上每一页的开始,随后搜索因特网上的所有超级链接,把代表超级链接的所有词汇放入一个数据库。这就是现在搜索引擎的原型。

1.2面向文档

合并流程:

4.Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch。

另外,新浪,阿里,有赞等著名公司也开始了ES方面的技术研发和实践。

索引创建步骤:

4.简单可用性强,不需要对搜索原理有深入的理解。平台有免费模式。

技术原理核心-空间向量模型

1.索引

2.3根据查询语句与文档的相关性,对结果进行排序

向量空间模型算法就可以用来判断词之间的关系,从而量化得到文档之间的相关性。

2.3预处理

现在的搜索引擎一般也提供分类查询的功能。如Google使用Open
Directory目录提供分类查询。在默认搜索模式下,一些目录类搜索引擎首先返回的是自己目录中匹配的网站,如中国的搜狐、新浪、网易等;而另外一些则默认的是网页搜索,如Yahoo。这种引擎的特点是检索的准确率比较高。

1.实时文档存储,文档对象的每个field都建立了索引,都能被检索

相关性的技术原理是空间向量模型,其本身也具有一些局限性:

3.2倒排索引

1.2语言分析再处理(词汇单元Token-词Term)

特点:

当然,Google作为世界上最为著名的搜索引擎,它的排名算法不仅仅只是PageRank,PR只是它排名规则的一部分而已。

具有可伸缩性,灵活的构建和易用性。提供一个易用性的平台,进行规模扩展时无需考虑核心功能与用户自定义选项间妥协。

两种DSL的区别:

Document = {term1, term2, …… ,term N}

Lucene是apache软件基金会4

1.Solr利用Zookeeper进行分布式管理;而Elasticsearch自身带有分布式协调管理功能;

多节点组成的集群拥有冗余能力,它可以在一个或几个节点出现故障时保证服务的整体可用性。

1)完全重建策略:当新增文档到达一定数量,将新增文档和原先的老文档整合,然后利用静态索引创建方法对所有文档重建索引,新索引建立完成后老索引会被遗弃。此法代价高,但是主流商业搜索引擎一般是采用此方式来维护索引的更新

倒排索引有两种不同的反向索引形式:

索引:如前所述,一个索引类似于传统关系数据库中的一个数据库,是一个存储关系型文档的地方。

1.分类:

搜索

2.去除文档中的标点符号

上公式即为计算权重的一个简单典型,实际情况可能会有不同,但基本比相同。

2.判断Term之间的关系从而得到文档相关性的过程,也即向量空间模型的算法

1)页面分析,生成临时倒排数据索引A,B,当临时倒排数据索引A,B占满内存后,将内存索引A,B写入临时文件生成临时倒排文件,

构建方法有简单法合并法两种。

如上一小节所讲,倒排索引构建完成之后的索引要保证能够完成full-text的搜索工作,那么在构建索引过程中进行对应的分词(Tokenization)操作就是必要的过程。这个过程会将文档中域的值切分为独立的单词(Term或Token)

后者的形式提供了更多的兼容性,但是需要更多的时间和空间来创建。

3)Queries用于查询上下文,而filters用于过滤上下文,不过,Elasticsearch的API也支持此二者合并运行。组合查询可用于合并查询子句,组合过滤用于合并过滤子句,然而,Elasticsearch的使用习惯中,也常会把filter用于query上进行过滤。不过,很少有机会需要把query用于filter上的。

把所有搜索出来的文档向量以及查询向量放到一个N维空间中,每个Term是一个维度。向量空间的维度数取二者的Term集合的并集。

计算词的权重有两个参数:一是词,二是文档。词的权重表示此词在文档中的重要程度,越重要的词有越大的权重,因为i在计算文档之间的相关性中将发挥更大的作用。

ETL-数据仓库技术

著名的开源程序Lucene是索引组件,它提供了搜索程序的核心索引和搜索模块,例如图中的“Index”及下面的部分;而ElasticSearch则更像一款搜索组件,它利用Lucene进行文档索引,并向用户提供搜索组件,例如“Index”上面的部分。二者结合起来组成了一个完整的搜索引擎。

filters):在文本被切割之前进行清理操作,例如移除HTML标签,将&替换为字符等;

文档中的文档ID用来和词链接,从而能根据词索引到文档,而频率则说明了,所搜索的词在该文档中出现的次数。

inverted file)。

jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。

Document Vector = {weight1, weight2, ……,weight N}

现代搜索引擎的索引都是基于倒排索引。相比“签名文件”、“后缀树”等索引结构,“倒排索引”是实现单词到文档映射关系的最佳实现方式和最有效的索引结构。

发展

澳门新葡亰网址下载 8文楼外楼,未经许可,禁止转载。

3)原地更新策略:试图改进再合并策略,在原地合并倒排表,这需要提前分配一定的空间给未来插入,如果提前分配的空间不够了需要迁移。实际显示,其索引更新的效率比再合并策略要低。

分词过滤器(Token

Query = {term1, term 2, …… , term N}

在查询中,精确值是很容易进行搜索的,但full-text则需要判断文档在“多大程度上”匹配查询请求,换句话讲,即需要评估文档与给定查询的相关度。

搜索引擎会根据多种指标来对根据检索词汇检索到的初步结果进行结果排名。如有名的Google创始人拉里·佩奇的PageRank算法就是Google搜索引擎排名运算法则的一部分。

shard,当然此数量可在索引创建之前通过配置自行定义,不过,一旦创建完成,其Primary
shard的数量将不可更改。

4)百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据。

倒排索引的原理在第三部分2小节已经介绍,这里主要介绍ES下的构建分词过程。

每个独立的搜索引擎都有自己的网页抓取程序。Spider顺着网页中的超链接,连续地抓取网页。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。

一个搜索引擎由搜索器、索引器、检索器和用户接口四个部分组成。**

5.应用

在关系数据库系统里,索引是检索数据最有效率的方式,。但对于搜索引擎,它并不能满足其特殊要求:

Query Vector = {weight1, weight2, …… ,weight N}

也许有一天你想把这些对象存储在数据库中。使用关系型数据库的行和列存储,这相当于是把一个表现力丰富的对象挤压到一个非常大的电子表格中:你必须将这个对象扁平化来适应表结构–通常一个字段对应一列而且又不得不在每次查询时重新构造对象。

2)对生成的多个临时倒排文件,执行多路归并,输出得到最终的倒排文件(

倒排索引:关系型数据库通过增加一个索引比如一个B树索引到指定的列上,以便提升数据检索速度。Elasticsearch和Lucene使用了一个叫做倒排索引的结构来达到相同的目的。

1.搜索引擎为程序自动索引;而目录索引则依赖人为操作。

网络搜索引擎通过特定算法的软件,跟踪网页中的超链接,逐层深入链接,逐渐扩张成一张遍布网络。因此,也形象的称之为蜘蛛(Spider)爬虫。这种软件的爬行,需要遵循一定的规则,按照指定的爬行深度和爬行广度来进行网页爬取。

Elasticsearch内置了许多字符过滤器、分词器和分词过滤器,用户可按需将它们组合成“自定义”的分析器。

严格意义上,目录索引不能称为搜索引擎。

3.去除停词(Stop
word)(停词,即语言之中的助词,谓语等没有实际含义的词。例:英语中的“a”,“the”,中文中的“啊”,“唉”,“之”,“乎”,“者”,“也”等)

我们在构建索引时,将文档切分为Term,那么当我们要根据关键词或者语句进行检索时,怎么通过语句来寻找Term,再通过Term来找到对应的文档呢?

六、Solr和ElasticSearch的不同

2.搜索

此过程是语言处理组件(Linguistic
Processor)
对词汇单元Token的再处理工作,通常是根据不同的语种来进行相应的特性处理,如英语语种会进行的操作:变为小写(Lowercase),单词缩为词根形式,单词转变为词根形式(Lemmatization)等。

4)混合策略:出发点是能够结合不同索引更新策略的长处,将不同索引更新策略混合,以形成更高效的方法。

按照搜索引擎的定义,一般将其工作原理分为四部分,即爬行,抓取存储,预处理,排名

搜索引擎的预处理器会将爬虫爬取回来的数据进行各种的预处理操作,减小数据音噪比,提炼有效数据。并通过索引器根据指定的索引构建方式构建索引。

2.Solr支持更多格式的数据json,XML等;而Elasticsearch仅支持json文件格式;

索引构建一般有正向索引,倒排索引等方式。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图