搜索引擎-处理查询

       我们从用户的角度来看,用户不关心什么索引结构是倒排还是签名文件,也不需要知道相关排序算法。用户提交了查询,就需要获取满意的搜索结果。这个搜索结果就是搜索引擎是否提供有效的服务。

1.查询流程

查询流程图:

1)用户提交查询

2)分析查询

     查询预处理:

     1. 一般过滤掉助词或者标点符号之类,如中文的“的”,英文'The' . 另外对中文做分词处理获取检索组合,

     2)对于中文等搜索,需要分词。

     3)单词去重等。但是不同的搜索引起处理方式可能不一样。

    查询词格式化:

    把词汇转换成wordID

3)  根据查询词从倒排索引库获取匹配的检索结果

4)根据特定相关度排序算法进行排序,生成最后搜索结果。

当然了,这个流程还会涉及到缓存的过程。


我们主要说明第3步和第4步的内容:

       第3步是基于倒排索引的查询处理。即对已生成的倒排索引,处理其中的数据产生查询结果。

      第4步就是相关度排序算法了,由相关检索理论模型来决定。

      搜索引擎的信息查询一般都是遵循一定的理论模型,最常用的主要有布尔模型,向量模型,概率检索模型,语言模型,机器学习模型等。在搜索引擎中,需要考虑更多的因素才能为用户提供更符合的结果,广泛的采用了向量模型。实际的搜索引擎查询实现方法一般采用了向量检索模型和布尔模型相结合的方式。

       目前机器学习模型逐渐流行起来。前baidu科学家 张栋是这方面的专家(weibo:http://weibo.com/machinelearning)。据说360推出的搜索有两套系统,一套是360搜索团队研发的,另外一套是张栋研发的,张栋研发的这套搜索系统的检索模型应该是基于机器学习的。

      这检索模型后面在做介绍。我们这里简单说明查询处理机制。


2. 基于索引的查询处理

  目前有两种常见的查询处理机制和跳跃指针的结构化查询优化:

   2.1 一次一文档 (Document at a time)

   2.2 一次一单词 (Term at a time)

   2.3 结构化查询,即跳跃指针。

   下面详细说明这些机制。举个例子:

    假设用户输入“搜索引擎 技术” 而“搜索引擎”这个Term对应的倒排列表文档 DocID一次为{1,3,4},“技术” Term对应的倒排列表中文档DocID列表为{1,2,4} 我们从中可以看出同时包含整个查询的文档是{1,4}.

3. 一次一文档 (Document at a time)

        搜索引擎接收到用户的査询后,首先将两个单词的倒排列表从磁盘读入内存。 所谓的一次一文档,就是以倒排列表中包含的文档为单位每次将其中某个文档与査询的最终相似性得分 计算完毕,然后开始计算另外一个文档的最终得分,直到所有文档的得分都计算完毕为止

        图3-1是一次一文档的计算机制示意图,为了便于理解,圈中对于两个单词的倒排列表 中的公共文档(文档1和文档4)进行了对齐。图中虚线箭头标出了查询处理计算的行进方向。

     

                                                          图3-1 —次一文档


处理流程:                                                                           

       1)  对于文档1来说,因为两个单词的倒排列表中都包含这个文档,所以可以根据各自的TF和IDF等参数计算文档和查询单词的相似性(具体相似性计算有很多种,此处对相似性计算做了简化处理,TF * IDF就是分数),之后将两个分数相加获得了文档1和用户查询的相似性得分: IDF=2, TF=2 , Score=4。
       2)  随后搜索系统开始处理文档2, 因为文档2只在"技术"这个词汇的倒排列表中,所以 根据相应的TF和IDF计算相似性后,即可得出文挡2和用户查询的相似性得分。
       3)  用类似的方 法依次处理文档3和文档4。
       4)  所有文档都计算完毕后,根据文档得分进行大小排序,输出得分 最闻的K个文档作为搜索结果输出,即完成了一次用户查询的响应。 

            结果的排序:D4,D1,D3,D4

       因为搜索系统的输出结果往往是限定个数的,比如指定输出10个结果,所以在实际实现 一次一文档方式时,不必保存所有文档的相关性得分,而只需要在内存中维护一个大小为K 的优先级别队列,用来保存目前计算过程中得分最高的k个文档即可,这样可以节省内存和计 算时间,一般会采用根堆数据结构来实现这个优先级别队列,在计算结束时,按照得分大小输出就可以实现搜索目标。


4. 一次一单词 (Term at a time)

       一次一单词的计算过程与一次一文档不同:
        一次一文档可以直观理解为在单词一文档矩阵中,以文档为单位,纵向进行分数累计,之后移动到后续文档接着计算,即计算过程是"先纵 向再横向";
       而一次一单词则是来取"先横向再纵向"的方式,即首先将某个单词对应的倒排 列表中的每个文档ID都计算一个部分相似性得分,也就是说,在单词一文档矩阵中首先进行 横向移动,在计算完毕某个单词倒排列表中包含的所有文档后,接着计算下一个单词倒排列表 中包含的文档ID, 即进行纵向计算,如果发现某个文档m已经有了得分,则在原先得分基础 上进行累加。当所有单词都处理完毕后,每个文档最终的相似性得分计算结束,之后按照大小 排序,输出得分最高的乂个文档作为搜索结果。

    图4-2是一次一单词的运算机制图示说明,图中虚线箭头指示出了计算的行进方向,为了保存数据,在内存中使用哈希表来保存中间结果及最终计算结果。

    

                            图4-2是一次一单词

处理流程:          
       1)搜索系统首先对包含"搜索引擎"的所有文档进行部分得分计算,比如对于文档1, 可以根据TF和1DF等参数计算这个文档对"搜索引擎"这个查询词的相似性得分,之后根据文档ID在哈希表中查找,并把相似性得分保存在哈希表中。
       2)依次对文档3和文档4进行类似的计算。
       3)当"搜索引擎"这个单词 的所有文档都计算完毕后,开始计算"技术"这个单词的相似性得分,对于文档1来说,同样 地,根据TF和IDF等参数计算文档1和"技术"这个单词的相似性得分,之后查找哈希表, 发现文档1已经存在得分("搜索引擎"这个单词和文档1的相似性得分),则将哈希表对应的 得分和刚刚计算出的得分相加作为最终得分,并更新哈希表中文档1对应的得分分值,获得了 文档1和用户查询最终的相似性得分,
       4)之后以类似的方法,依次计算文档2和文档4的得分。
       5)当全部计算完毕时,哈希表中存储了每个文档和用户査询的最终相似性得化排序后输出得分 最高的K个文档作为搜索结果。




  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
《深入搜索引擎:海量信息的压缩、索引和查询》是斯坦福大学信息检索和挖掘课程的首选教材之一,并已成为全球主要大学信息检索的主要教材。《深入搜索引擎:海量信息的压缩、索引和查询》理论和实践并重,深入浅出地给出了海量信息数据处理的整套解决方案,包括压缩、索引和查询的方方面面。其最大的特色在于不仅仅满足信息检索理论学习的需要,更重要的是给出了实践中可能面对的各种问题及其解决方法。 《深入搜索引擎:海量信息的压缩、索引和查询》作为斯坦福大学信息检索课程的教材之一,具有一定的阅读难度,主要面向信息检索专业高年级本科生和研究生、搜索引擎业界的专业技术人员和从事海量数据处理相关专业的技术人员。 第1章 概览 1.1 文档数据库(DOCUMENT DATABASES) 1.2 压缩(COMPRESSION) 1.3 索引(INDEXES) 1.4 文档索引 1.5 MG海量文档管理系统 1.6 进一步阅读 第2章 文本压缩 2.1 模型 2.2 自适应模型 2.3 哈夫曼编码 范式哈夫曼编码 计算哈夫曼编码长度 总结 2.4 算术编码 算术编码是如何工作的 实现算术编码 保存累积计数 2.5 符号模型 部分匹配预测 块排序压缩 动态马尔科夫压缩 基于单字的压缩 2.6 字典模型 自适应字典编码器的LZ77系列 LZ77的Gzip变体 自适应字典编码器的LZ78系列 LZ78的LZW变体 2.7 同步 创造同步点 自同步编码 2.8 性能比较 压缩性能 压缩速度 其他性能方面的考虑 2.9 进一步阅读 第3章 索引 3.1 样本文档集合 3.2 倒排文件索引 3.3 压缩倒排文件 无参模型(Nonparameterized models) 全局贝努里模型 全局观测频率模型(Global observed frequency model) 局部贝努里模型(Local Bernoulli model) 有偏贝努里模型(Skewed Bernoulli model) 局部双曲模型(Local hyperbolic model) 局部观测频率模型(Local observed frequency model) 上下文相关压缩(Context-sensitive compression) 3.4 索引压缩方法的效果 3.5 签名文件和位图 签名文件 位片签名文件(Bitsliced signature files) 签名文件分析 位图 签名文件和位图的压缩 3.6 索引方法的比较 3.7 大小写折叠、词根化和停用词 大小写折叠 词根化 影响索引长度的因素 停用词(stop word) 3.8 进一步阅读 第4章 查询 4.1 访问字典的方法 访问数据结构 前端编码(Front coding) 最小完美哈希函数 完美哈希函数的设计 基于磁盘的字典存储 4.2 部分指定的查询术语 字符串暴力匹配(Brute-force string matching) 用n-gram索引 循环字典(Rotated lexicon) 4.3 布尔查询(BOOLEAN QUERY) 合取查询(conjunctive query) 术语处理顺序 随机访问和快速查找 分块倒排索引 非合取查询(Nonconjunctive query) 4.4 信息检索和排名 坐标匹配(Coordinate matching) 内积相似度 向量空间模型 4.5 检索效果评价 召回率和精确率 召回率-精确率曲线 TREC项目 208 万维网搜索(World Wide Web Searching) 其他有效性评价方法 4.6 余弦法实现 文档内频率 余弦值的计算方法 文档权重所需的内存 累加器内存 快速查询处理 按频率排序的索引 排序 4.7 交互式检索 相关性反馈 概率模型 4.8 分布式检索 4.9 进一步阅读 第5章 索引构造 第6章 图像压缩 第7章 文本图像 第8章 混合图文 第9章 系统实现 第10章 信息爆炸 附录A MG系统指南 附录B 新西兰图书馆

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hguisu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值