search(0)- 企业搜索,写在前面

  计划研究一下搜索search,而后写个学习过程系列博客。开动以前先说说学习搜索的目的:不是想开发个什么搜索引擎,而是想用现成的搜索引擎在传统信息系统中引进搜索的概念和方法。对我来讲,传统的管理系统legacy i.t system已经走到了尽头。根本缘由是信息在量上的爆发增加,传统数据管理方式已经没法兼顾了。在我看来,除了交易管理,传统的关系数据库方式在业务管理的其它方面,特别是业务相关的数据分析、决策支持等确定是力不从心了,这些从持续多年我所经历的数据库红色锁标记就颇有说服力了。无能否认,必须想办法在大数据、分布式计算方面寻找合适的解决方案。前两年已经完成了一系列分布式计算、分布式数据库,分布式流处理等博客,足够构建一个分布式大数据平台来实现对海量数据的存储、处理了。剩下最重要的问题是如何使用平台上的这些数据,即如何能轻松又高效的使用大数据,不然前面一切努力将化为乌有。如今最迫切的需求(我认为的)就是如何对这些大数据进行高效的分析、关联,组合而后产生全面、精准的业务决策或者系统使用的支持数据。也就是说能够经过搜索把大数据平台上的数据按照业务管理要求的信息内容、表现形式提供给前端系统。前端

  首先解释一下:传统业务管理系统里的查询(查找)与搜索有较大区别。传统系统采用查询方式来筛选系统里符合条件的交易记录。之因此提到交易记录是由于传统系统中数据的强格式化,连带查询条件的设置也较僵化、缺少灵活性。因为查询结果是经过对查询条件的高度匹配产生的,每每须要查询者充分了解业务特性才能准确的表述需求造成条件,这也是大多数操做者没法具有的能力,形成查询工具的实用性大打折扣。java

搜索search除条件匹配式的查找外最重要的是具有了关联relevance的特性。首先,搜索是基于大数据文件数据库的,对格式没有硬性要求,操做者可自由、灵活的表达搜索条件。再者搜索具有信息关联能力,能根据搜索条件除符合条件的文件外,还能把知足搜索条件中表述的关联,如:文字关联、意思关联、信息关联等应用在目标文件的匹配上,产生一个以关联度排序的结果文件清单。换句话说就是好的1搜索方案还能够猜度操做者的搜索目的,提供建议目标结果。如此大大下降了对使用者操做水平的要求,最终任何用户广泛均可以轻松使用搜索来获取符合专业要求的搜索结果。mongodb

考虑了一下市面上的几个开源搜索引擎,最终选择了elasticsearch。除了搜索功能外,elasticsearch仍是一个分布式的数据库。固然,咱们不会采用elasticsearch的数据库存取功能,由于已经选择了mongodb做为大数据平台数据库。因此,最终的系统结构是一个mongodb+elasticsearch的搜索平台:mongodb存储原始业务数据,elasticsearch负责对这些业务数据进行索引构建。数据库

从结构上说:elasticsearch的操做能够分为后台批次型的索引构建(indexing)及前端实时的索引管理及搜索,包括对索引的CRUD,这些是经过elasticsearch提供的api来实现的。如上所述,elasticsearch也是某种数据库管理系统,提供了多种语言的客户端驱动,包括java。但后面咱们会用elastic4s:一个开源的scala elasticsearch客户端,根据各类业务搜索场景,调用elasticsearch的各类api来实现行业专用的搜索功能。api

相关文章
相关标签/搜索