搜索引擎

搜索引擎分类:

全文搜索:

1.从互联网上抓取网页,利用能够从互联网上自动收集网页的蜘蛛系统程序,自动访问互联网,并沿着任何网页中所有URL爬到其他网页,重复这个过程,并把爬过的素有网页收集回来。
2.由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL,编码类型,页面内容包含的滚见此,关键词位置,生成时间,大小,与其他网页的连接关系等),并根据一定的相关度算法进行大量的复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后利用这些相关信息建立网页索引数据库。
3.在索引数据库中搜索排序:当用户输入关键词后,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。因为所用相关网页针对该关键词的相关度早已计算好,所以只需按照现成的相关数值排序,相关度越高,排名越靠前。最后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
4.对搜索结果进行处理排序:所有相关网页针对该关键词的相关信息在索引库中都有记录,只需综合相关信息和网页级别形成相关数值度,然后进行排序,相关度越高,排名越靠前。最后由页面生成系统将搜索结果的链接地址和页面摘要等内容组织起来返回给用户。

分类搜索:

目录搜索引擎主要是按类目对网站进行收录。查询时不需要输入关键词,
查询是按照分类层层点击进入,便可查到所需网络资源。

元搜索引擎:

将多个单一搜索引擎集成在一起,提供统一的检索界面,将用户的检索提问同时提交给多个独立的搜索引擎,同时检索多个数据库;并根据多个独立搜索引擎的检索结果进行二次加工,如对检索结果去重、排序等;输出给自己。

Broker:按照不同搜索引擎的语法进行查询改写和分发,并收集到每个搜索引擎返回的文档列表.
Rank:对各搜索引擎返回的结果排序。
Present:对结果进行整合和界面显示。比如按照全局相关性,或者主题等。

垂直搜索引擎:

专注于特定的搜索领域和搜索需求。如机票、旅游、小说、视频、购物搜索等

搜索引擎的商业模式:

免费服务+广告。

搜索引擎工作原理:

在这里插入图片描述

1.从文档索引库中不断获取URL供爬行器爬取。
2.爬行器分布式,协同工作爬取url所指网页
3.存储爬取的网页到数据资源库(库中包含每个web页的全部html信息,并用zlib压缩)
3.标引器/索引器,读取资源信息,解压文档,分析网页中的所有的链接,将重要信息存在锚库(anchor),解析网页文本信息,统计词频及位置等信息(hits),并将hits分配到桶中,建立部分排序后的索引。
4.URL解析器:读取anchor文件,将链接转化成绝对url,再转化成docID。为链接描述文本编制索引,与所指向的docID关联,产生文档的链接数据库。
5.索引库:存储了文档的相关信息(以docID顺序排列。包含指向资源库的指针,文件校验和,统计表。),已抓取网页(指针指向文件内容),未抓取网页(指向包含这个URL的URL列表)。
6.分类器:从桶中读取数据,按照wordID docID进行分类和排序,然后生成倒排索引。
7.桶:存储了WordID的归类,正排和倒排索引。
8.网页级别评定器:原始的pageranker,利用连接信息计算网页的重要性。
9.查询器:接收并解析用户查询,利用词典,桶中的索引信息召回文档,并结合pagerank及文档匹配信息排序并匹配文档。

web搜索:
网页收集-
1.爬虫,爬虫抓取策略:BFS/DFS
2.预处理:结构解析->链接分析->内容分析->索引

算法:
PageRank:利用链接进行网页评级的算法。
核心思想:某网页被指向的次数越多,则它的重要性越高;越是重要的网页,所链接的网页的重要性也越高。
缺点:容易被作弊或买链接形式影响排名

反垃圾算法-TrustRank(信任指数)
核心思想:好的页面很少指向坏的页面
Trustrank是一种半自动却分垃圾网页和高质量网页的算法
信任衰减(Trust attenuation):信任页面授予的可信度随着距离的增加而衰减
信任分裂(Trust splitting):一个信任页面指向的网页越多,则每个网页分到的

网页处理:
网页去重
目的:
避免网页的重复收集和计算,提升网页收集速度
节省存储空间,
避免重复信息造成的不好的用户体验

Simhash-Google(www2007)指纹生成算法
计算海明距离找出近重复文本:
差异位数目
哈希编码长度
文档数量

分段匹配方式:

  1. 将64位的二进制串等分成四块
    2、调整上述64位二进制,将任意一块作为前16位,总共有四种组合,生成四份table
    3、采用精确匹配的方式查找前16位
    4、如果样本库中存有234(差不多10亿)的哈希指纹,则每个table返回2(34-16)=262144个候选结果,大大减少了海明距离的计算成本

百度去重算法
取出文章中最长的n句话,做hash签名
n一般取3。准确率和召回率都能到达80%以上。

K-Shingle
对于一段文本的词计算分词向量, [w1,w2, w3, w4, … wn],
构建文本的K-shingle表示, 如k=3时,向量为[(w1,w2,w3),(w2,w3,w4), (w3,w4,w5), …… (wn-2,wn-1,wn)],
计算两个文本的shingle向量的相似度(jarccard系数)来判断文本是否重复。
向量空间巨大,相比vsm更加耗费资源,一般业界很少采用。

标引入库:
在这里插入图片描述

文本处理:
1.分词:将句子切分成词元。-IK
基于词典:基于字典、词库匹配的分词方法;(字符串匹配、机械分词法)
基于统计:基于词频度统计的分词方法;
基于规则:基于知识理解的分词方法。
2.归一化:将查询和文档进行字母级别的归一化处理,如大小写
3.词干提取:将不同形式的词到词干
4.停用词:去掉非常常见的词:the/a/to/of

用户输入之后:
1.查询纠错:纠正用户输入的错别字等
2.查询补齐:猜测用户可能输入,在下拉框提示,提升用户体验
3.查询分类:判断查询所属领域,如视频,新闻等;
意图识别:在限定领域下,识别用户意图,如找某个演员的电影,还是某种类别的电影等;
语义解析:解析意图相关参数信息,如命名实体,时间,地点等
查询扩充:同义、近义查询扩充。基于关键词的检索中使用
4.相关查询推荐:推荐用户其他感兴趣的查询

查询分析算法:

查询意图分析和改写主要基于线性或浅层模型
非线性,多层次过度
引入深度模型,加fastText, NMT,Seq2Seq

查询/意图分类-FastText(2015 facebook)
1.分词构造词表
2.词+ngram embedding
3.隐藏层对词向量特征进行叠加平均
4.使用hierarchy softmax做多分类
特点:
模型简单,速度快
应用:
玩机技巧15个类别分类,
准确率:95%

查询/意图分类-TextCNN
TextRNN,
RCNN,
注意力机制:HAN(Hierarchy attention network)
更深的网络:DPCNN( Deep pyramid CNN)

检索模型-布尔模型
假设用户查询为:Brutus AND Caesar
在词典中定位Brutus,并获取相应的posting
在词典中定位Caesar,并获取相应的posting
合并两个postings列表,有序列表,合并时间复杂度0(x+y)

排序算法发展

1.排序主要基于分治思想,对各种相关性打分用线性加权或人工侧率,辅助以点击模型
2.基于ML的排序模型被证明较为程序,各种LTR模型被提出,如Grank,RankSVM, LambdaMart
3.使用深度模型,加入深度特征,如 dssm,cdssm

搜索排序算法-机器学习排序
搜索排序算法-LTR
搜索排序算法-因子分解机FM
FM: Logistic Regress +高级特征交叉项
适合对各种标签0/1特征的融合, 在海量稀疏场景下模型参数学习更加准确,比传统的LTR拟合强度好。

相似度计算-DSSM(Deep Structured Semantic Maching)
思想:生成查询与文档的向量化表示,计算距离,用softmax转换成概率,在用最大似然求解。

搜索排序算法-WDL(wide & deep Learning)
主要用于搜索、推荐中的个性化排序。
核心思想:结合模型的记忆能力和DNN的泛化能力, 同时训练2组参数,达到整体模型的最优。

最新的一些排序算法方向:
强化学习:
DDPG(Deep Deterministic Policy Gradient)
GAN:
IRGAN

索引分类:
1.正排索引:文档空间->索引词空间的映射
2.倒排索引:索引词空间->文档空间的映射,主要用于召回

常见的搜索引擎:
**Lucene:**目前最为流行的基于 Java 开源全文检索工具包。主要提供索引和搜索功能。不是一个完整的搜索应用程序。
Sphinx:
基于c++写的搜索引擎,主要包含索引和搜索两个服务。
支持通过php、C++等特定API接口访问搜索服务,适合数据量在百万级的单机搜索引擎,速度快,全量索引方便,服务稳定。虽然也支持分布式搜索环境,但易用性上会差于es。
特点:
索引速度快、配置使用方便、检索性能好等优点。
可以直接从mysql获取索引数据。
在分布式、易用性、实时性等功能上面会略差于es,
特别对于一些搜索引擎的高级功能上面需要定制开发才能比较好地实现。
solr:
Solr是一种java开发的独立的企业级搜索应用服务器,它提供了类似于Web-service的API接口,后台是基于Apache Lucene进行封装。
提供分布式索引、分片、副本集、负载均衡和自动故障转移和恢复功能。
高可靠、可扩展和高容错。
客户:Netflix,eBay,Instagram和Amazon(CloudSearch)

主要特点:
全文索引
高亮
分面搜索
实时索引
动态聚类
数据库集成
NoSQL特性和丰富的文档处理(例如Word和PDF文件)

elasticsearch
java语言开发的,基于Lucene构造的开源的企业级搜索引擎。
通过REST和schema-free(不需要预先定义 Schema,solr是需要预先定义的)的JSON文档提供分布式、多租户全文搜索引擎。
并且官方提供Java,Groovy,PHP,Ruby,Perl,Python,.NET和Javascript客户端。
客户:Github(20TB), foursquare,Sony, Mozilla, SoundCloud

主要特性:
自带分布式功能
Schema-free
分布式实时文档存储
多租户:可根据不同用途分索引,可同时操作多个索引,不同用户间数据的隔离性。
查询统计分析工具: ELK工具组合
分组和聚合

云侧:公有云搜索
端侧:知识库搜索(we know),华为视频搜索,Hag华为快服务,Bot小艺技能搜索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值