技术架构图

索引的创建

根据文件来源,分为hadoop数据和oarcle数据两类。
(1) hadoop数据
在线网盘的文本文件和非文本文件都保存在hadoop的hdfs或hbase数据表中,推荐系统的网页文件也保存在hbase表中。这些文件通过tika、Jsoup等文本提取或文本解析工具将文件名、文本内容、网页文字内容等可索引数据解析出来保存在hbase表的对应字段中,然后通过ES-Hadoop,利用hive、spark大数据处理工具与elasticsearch协同工作,快速建立索引。
在线网盘上传的新数据以及爬虫爬取的推荐网页数据会先进行解析,分别保存在hbase中和kafka中。
索引更新程序从kafka中读取数据进行更新。
(2) Oracle数据
信息化系统的结构化数据保存在oracle数据表中。这类数据直接使用java编写程序读取oracle数据,然后使用elasticsearch的API建立索引。
提供新建oracle表索引、更新表索引、删除表索引接口,可在web端调用接口对oracle表的索引进行管理。
Oracle数据的索引自动更新采用定时任务进行。

索引的查询

文档:创建索引时,作为整体的某篇文章、某个网页的所有内容建立为一个索引文档。
字段:一个索引文档可能包括多个字段,比如网盘文件的索引文档包括文件名、上传人、所在单位、摘要、正文、所属类别等字段。创建索引时,会将每个字段分词,再根据词建立索引。
词条:搜索框里输入的要查询的内容,可能是一个词,也可能是多个词组成的短语。搜索时,会将词条先进行分词。
(1) 基本搜索
根据数据内容的不同和创建索引时索引策略设计的不同,提供不同的搜索策略。
- 最佳字段匹配搜索:在一个字段中匹配了最多分词的查询子句占分值最大,然后将所有匹配字段的查询子句分值加和,除以查询子句数目,得到综合得分。结果就是哪个文档中包含查询的分词的字段数多,哪个的最终分值高。如果某个文档中的一个字段包含了最匹配的全部词条,而其它字段没有跟词条匹配的词;而另一个文档每个字段都包含了搜索词条的某一个词,则该文档比前一个文档的得分高。而我们实际想要的结果可能是最匹配全部词条的文档。
- 交叉字段匹配搜索:会解析查询字符串来得到一个词条列表,然后将所有的字段视为一个大的字段,然后在任一字段中搜索每个词条。这种方式还能够在查询期间对个别字段进行提升,也就是让某个字段有匹配内容时的权值比别的字段高。
- 自身投票字段提升搜索:为文档定义一个权值字段,比如当文档被浏览次数多时,该文档的权值就高。然后在搜索时使用文档的权值字段的值,根据预设的函数来改变搜索结果的评分。
- 短语查询调整分值搜索:首先解析查询字符串来产生一个词条列表。然后会搜索所有的词条,但只保留含有了所有搜索词条的文档,并且词条的位置要邻接。可以设定词之间最大相隔多远算邻接。
- 使用关联词解析器搜索:在创建索引时,将两个相邻的词(或多个相邻的词)组合成一个作为关联词创建索引。这种方法不仅比短语查询更灵活,它们的性能也更好。相比每次搜索需要为短语查询付出的代价,该查询和简单match查询一样的高效。只是在索引期间会付出一点小代价,因为更多的词条需要被索引,意味着使用了该解析器的字段也会占用更多的磁盘空间。但是,多数应用是写入一次读取多次的,因此在索引期间花费一点代价来让查询更迅速是有意义的。

(2) 拼音搜索
对所有索引文档内容的分词结果,按照词频建立热词列表,并为热词列表建立拼音索引。在使用拼音搜索时,拼音对应的汉字词从热词索引中得出前n个,并按词频排序,显示在下拉框中供用户选择。
有新数据进行索引更新的同时,更新热词列表和热词拼音索引。
(3) 搜索词语联想
保存所有曾经搜索过的词(短语),为这些搜索词语建立分词索引和拼音索引,同时为它们建立边缘ngrams索引(比如:对“中华人民共和国”这个词,分别为“中”、“中华”、“中华人”、“中华人民”、“中华人民共”、“中华人民共和”、“中华人民共和国”建索引)。
对搜索框中输入的汉字或拼音,每输入一个字或字母,就在上面方式建立的索引中搜索最匹配的前n个返回,显示在下拉框中选择。
有新搜索词语时,添加到搜索词语列表并更新搜索词语的分词索引、拼音索引及边缘ngrams索引。
(4) 即时搜索
以上几种搜索,都是在用户输入完所有想要搜索的词语,敲回车或从下拉框中选择确认后,再像后台提交请求,获取搜索结果。即时搜索实现的是,用户每输入一个字或一个字母,假如停留时间超过阈值,则自动向后台提交搜索请求并返回结果,且光标继续停留在输入框的当前位置。假如结果不符合用户需求,则可以继续输入搜索内容。
对于有拼音搜索和搜索词语联想,都是进行的即时搜索以获取推荐词语列表,并且自动将列表中第一个词语直接搜索并显示结果,不需要等待用户敲回车确认后再进行。

索引的备份

启动定时任务,定期将所有索引备份到hadoop-hdfs中。

全文检索系统技术架构及流程说明相关推荐

  1. 自研海外PCDN系统技术架构与演进

    Photo by Nick Wehrli from Pexels 本文来自小溪流科技首席架构师张道远在LiveVideoStackCon 2019深圳站上的演讲,演讲内容主要涉及PCDN海外复杂环境中 ...

  2. 医疗保障信息平台HASF应用系统技术架构名词解释技术选型架构图

    下载地址: 医疗保障信息平台HASF应用系统技术架构规范.pdf下载-无极低码 HSAF 医疗保障应用框架(Healthcare Security Application Framework) Iaa ...

  3. 爱聊天(LoveChat)即时通讯聊天APP系统——技术架构

    爱聊天(LoveChat)即时通讯聊天APP系统--技术架构 公司旗下第三代即时通讯产品 第一代:阿卡信 https://gitee.com/openzaly/akaxin-openzaly 第二代: ...

  4. 业务系统技术架构的方法论

    业务类系统(通常称为To B 类产品),一般包括crm,供应链,物流等.系统的架构设计非常具有挑战性. 面向用户的To C 类前台产品,无论产品经理还是用户都已经培养起了使用习惯,对功能有一定程度的理 ...

  5. 史上最详细的新浪广告系统技术架构优化历程

    内容来源:2017 年 08 月 10 日,新浪广告开发技术专家徐挺在"第二届APMCon中国应用性能管理大会[大规模网络架构优化专场]"上进行的<新浪广告系统的服务化优化历 ...

  6. 电商物流系统技术架构进化史

    1998年3月,中国第一笔互联网网上交易成功,标志着中国正式从电子数据交换时代步入互联网电子商务时代,从2003年开始进入迅速发展阶段,到今天,中国电子商务格局已经形成.笔者在传统企业应用和电商互联网 ...

  7. QQ 空间社交广告系统技术架构实践

    作者|冯启航 编辑|小智 QQ 空间的在增值营收服务上探索了多年,本文将展示负责增值服务体系的后台工程师如何在众多增值业务需求面前找到最合适的技术架构的支撑这个年入几十亿的产品,以及如何利用好大数据为 ...

  8. 支付核心研发部 | POS支付系统技术架构解密

    点击「京东金融技术说」可快速关注 「团队介绍」 POS支付团队,支撑整个京东货到付款业务,配送小哥人手一台POS机就是我们支付工具,为京东数万台POS机提供更好的支付体验.更好的支付产品,是我们整个团 ...

  9. 大型系统技术架构要点

    架构一词,比较飘渺,隐藏在代码的背后,似有似无.大家对于架构师这个职位也褒贬不一.大型网站不是设计出来的,而是逐步发展演化过来的. 什么是架构? 最高层次的规划,难以改变的决定,这些规划和决定奠定了事 ...

最新文章

  1. 浅谈 翻硬币游戏【Nim博弈】
  2. 重构学习1-重命名方法、类、参数等
  3. 【EasyUI tree】Python 异步菜单树的实现
  4. 强一致性和弱一致性的区别
  5. 使用java实现数字滤波器
  6. 给技术型创业者的几点建议
  7. WOW、ScrollReveal:WOW.js和ScrollReveal.js基础学习
  8. 【图论】Dijkstra算法解决有向图最短路问题
  9. 图书-旅行-十年徒步中国:《信念:十年徒步中国》
  10. winedit使用教程_latex与winedit入门指导教程.pdf
  11. 【JSP笔记02】JSP注释、脚本、表达式、JSP三大指令、JSP七大动作的介绍及使用
  12. 浅谈sklearn中DBSCAN的欧式距离(Euclidean Distance)的计算
  13. 记录一次上网正常但是【登录客户端应用网络异常问题】
  14. 特殊的搜狗拼音输入法
  15. win7 设定固定的ip地址
  16. 【详细七层】OSI 网络模型,七层网络模型
  17. java8 朗姆表达式,Python基础
  18. Bootstrap系列之卡片(Cards)
  19. 一个外地人在郑州报考驾校、选择驾校的经历分享给大家。
  20. 西门子S7 200smart与欧姆龙E5cc温控器通讯程序

热门文章

  1. win10亮度_Win10玩游戏优化设置教程,八大游戏优化设置,让游戏体验更佳
  2. 联想笔记本声音太小怎么办_笔记本电脑声音变小了怎么办 这里有妙招
  3. Unity快速实现回合制游戏
  4. U盘在电脑上不显示怎么办?
  5. JDBC学习笔记——Java语言与数据库的鹊桥
  6. 漫谈 | 从52个思考题来看《Linux内核设计的艺术》
  7. 【YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection
  8. CSAPP_实验二 拆炸弹 汇编知识应用
  9. 图形学笔记(二十)粒子、刚体、流体的模拟—— 欧拉方法、Errors 和 Instability、中点法、自适应步长、隐式欧拉方法、Runge-Kutta方法、刚体与流体模拟(质点法、网格法、MPM)
  10. activiti设置和使用启动人;activiti:initiator的作用及其使用