一个完整的搜索系统 - God bless you - 博客园

一个完整的搜索系统 - God bless you - 博客园

一个完整的搜索系统

一个完整的搜索系统

层次型倒排索引

基于前面非精确top K检索中的胜者表的思路,实际搜索系统可以建立多层索引结构。

基本思路:建立多层索引,每层对应索引词项的重要性

查询处理过程中,从最高层索引开始。如果最高层索引已经返回至少k (比如, k = 100)个结果,那么停止处理并将结果返回给用户。如果结果 < k 篇文档,那么从下一层继续处理,直至索引用完或者返回至少k 个结果为止。

例子:两层的系统
第1层: 所有标题的索引
第2层: 文档剩余部分的索引
标题中包含查询词的页面相对于正文包含查询词的页面而言,排名更应该靠前

注:很多人认为,Google (2000/01)搜索质量显著高于其他竞争者的一个主要原因是使用了多层次索引。(当然还有PageRank、锚文本以及邻近限制条件的使用)。

查询词项的邻近性限制

对于检索中的查询,特别是Web上的自由文本查询来说,用户往往希望返回的文档中与大部分或者全部查询词项之间的距离比较近,因为这表明返回文档中具有聚焦用户查询意图的文本。

考虑一个由两个或者多个查询词项构成的查询t1, t2, . . . , tk。令文档d中包含所有查询词项的最小窗口大小为ω,其取值为窗口内词的个数。例如,假设某篇文档仅仅包含一个句子The quality of mercy is not strained,那么查询strained mercy 在此文档中的最小窗口大小是4。直观上讲,ω的值越小,文档d和查询匹配程度更高。如果文档中不包含所有的查询词项,那么此时可以将ω设成一个非常大的数字。在计算时,还可以考虑各种可能的策略变化,比如在以单词个数来计算窗口宽度ω时,可以不考虑停用词的数目。

这种基于邻近性(proximity)加权的评分函数已经和纯余弦相似度计算方法有所不同,而更接近于目前包括Google在内的很多搜索引擎所提供并明显在使用的“软合取”(soft conjunctive)语义。

注:所谓“ 软合取” 指的是在对一个包含多个词项的查询进行检索时,检索中的文档中只要出现大部分查询词项即可,并不要求出现全部查询词项。

查询分析器

给定rising interest rates 之类的查询,如何处理?更一般地,给定我们前面介绍过的各种能够影响文档得分的因素,如何对这些因素进行组合?

上述问题的答案当然依赖于用户数量、查询分布及文档集本身。通常情况下,会有一个查询分析器(query parser)将用户输入的关键词转换成带操作符的查询,该查询能够基于底层的索引结构进行处理。有时,这种处理过程可能需要基于底层索引结果对多个查询进行处理,比如,查询分析器可能会产生如下的一系列查询。

1. 将用户输入的查询字符串看成一个短语查询。利用向量空间模型求解,此时输入查询向量是以rising interest rates 为基的1 维向量。
2. 如果包含短语rising interest rates 的文档数目少于10 篇,那么会将原始查询看成rising interest 和interest rates 两个查询短语,同样通过向量空间方法来计算。
3. 如果结果仍然少于10 个,那么重新利用向量空间模型求解,这时候认为3 个查询词项之间是互相独立的。

上面的每一步在调用的情况下都会产生一系列带得分的文档列表结果,而每个得分必须融合向量空间计算、静态得分、邻近度加权或其他可能的因素,特别地,一篇文档可能在上述的多个步骤结果列表中同时出现。这时就要求有一个综合得分函数能够融合不同来源的得分。

综上一个完整的搜索系统示意图

posted on 2012-09-14 13:50 lexus 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/09/14/2684824.html

一个完整的搜索系统 - God bless you - 博客园相关推荐

  1. 一个完整的crm系统都应该具备哪些功能?

    "CRM系统是一道开放性题目,它没有固定答案." 这句话一定要牢牢记住,不仅是CRM系统,它适用于所有系统. 企业想要弄清楚一个完整的CRM系统应该具备哪些功能,首先得清楚CRM系 ...

  2. 即时消息:一个完整的IM系统是怎样的

    什么是IM IM即"即时(实时)消息技术",是互联网实时互动场景的底层架构:包括聊天.直播.在线客服.物联网等这些业务领域在内,所有需要"实时互动"" ...

  3. 打造一个专注阅读的博客园主题

    文章目录 效果展示 基本设置 代码高亮 页面定制 CSS 代码 博客侧边栏公告 页首 HTML代码 页脚 HTML 代码 页脚 HTML 代码中标签介绍(一定要看完!) silence.min.js ...

  4. linux编写一个博客脚本,Linux 脚本编写基础 - 凌度 - 博客园.pdf

    Linux 脚本编写基础 - 凌度 - 博客园 Linux 脚本编写基础 1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始 (必须放在文件的第一行): # ...

  5. Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园

    Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园 Linux系统内存管理之伙伴系统分析 今天去面试,一位面试官提到了内存管理的伙伴系统,当时就懵了,因为根本就没有听说过.晚上回来在实验 ...

  6. 关于幂律分布的一个笔记_哈克_新浪博客

    关于幂律分布的一个笔记_哈克_新浪博客 关于幂律分布的一个笔记     (2011-03-02 18:12:27)     转载▼     标签:     幂律     二八法则     杂谈     ...

  7. 给博客园加一个会动的小人-spig.js

    给博客园加一个会动的小人-spig.js 效果大概是这样,感觉十分可爱qvq 那么怎么添加呢? 首先需要开通js/html权限. 然后在页脚html代码中加入以下代码 <script src=& ...

  8. 分享一个有趣的学习方法,欢迎一起探讨如何提高学习兴趣作者:1-2-3 来源:博客园 发布时间:2009-03-09 16:20 阅读:2820 次 原文链接 [收藏]

    分享一个有趣的学习方法,欢迎一起探讨如何提高学习兴趣 作者:1-2-3  来源:博客园  发布时间:2009-03-09 16:20  阅读:2820 次  原文链接   [收藏]   有些人似乎天生 ...

  9. python博客项目评论_Python 爬虫入门——小项目实战(自动私信博客园某篇博客下的评论人,随机发送一条笑话,完整代码在博文最后)...

    之前写的都是针对爬虫过程中遇到问题的解决方案,没怎么涉及到实际案例.这次,就以博客园为主题,写一个自动私信博客下的评论人员(在本篇留下的评论的同学也会被自动私信,如果不想被私信,同时又有问题,请私信我 ...

最新文章

  1. Winform控件:打开文件对话框(OpenFileDialog)
  2. lvm 扩展根目录_Linux下lvm在线扩容步骤
  3. bool 取反_dataframe根据bool值高效地进行多重条件筛选的
  4. [2019杭电多校第四场][hdu6616]Divide the Stones
  5. XenApp简单部署
  6. 软件测试工程师简历项目经验怎么写?一千个软件测试简历范文模板
  7. ffmpeg mp4转mov
  8. revit 转换ifc_将IFC转换成GLTF格式
  9. 神秘病毒现形 网购当心黑客“点杀”
  10. android的平台签名工具,《安卓开发》APK签名工具使用方法
  11. STM32cubemx教程 DAC+TIM+DMA
  12. PHP RGB图片模式转换CMYK模式图片
  13. 在Windows下编写的代码,实时在Linux下编译
  14. 单片机项目:8个发光二极管从上至下间隔一秒流动,其中每个管亮500ms,500ms,亮时蜂鸣器响,灭时蜂鸣器关闭,一直重复下去
  15. Java IO 之BIO讲解
  16. 《世界是数字的》读书笔记第一部分_硬件篇
  17. 科目一知识点口诀(考驾照顺手整理了一下课)
  18. 展开关闭页面html,JQUERY实现网页右下角固定位置展开关闭特效的方法
  19. ·144. 二叉树的前序遍历(前中后总结)
  20. UE4入门学习笔记(一)准备设计数据的优化处理

热门文章

  1. EXP9 web安全基础实践
  2. 堆排序Java实现以及使用场景
  3. assert()使用
  4. 怎么修改SQL的密码?
  5. C# 取QQ会话记录
  6. 5 个牛逼的算法设计,你知道几个?
  7. Form通过js提交
  8. openswan协商流程之(四):main_inI2_outR2()
  9. html基础-几种布局
  10. 微信小程序收款手续费_小程序微信支付收款流程