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

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

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

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

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

search(0)- 企业搜索,写在前面的更多相关文章

  1. SOLR搭建企业搜索平台

    一. SOLR搭建企业搜索平台  运行环境:  运行容器:Tomcat6.0.20  Solr版本:apache-solr-1.4.0  分词器:mmseg4j-1.6.2  词库:sogou-dic ...

  2. 用weexplus从0到1写一个app

    说明 基于wexplus开发app是来新公司才接触的,之前只是用过weex体验过写demo,当时就被用vue技术栈来开发app的开发体验惊艳到了,这个开发体验比react native要好很多,对于我 ...

  3. lucene7.1.0实现搜索文件内容

    Lucene的使用主要体现在两个步骤: 1 创建索引,通过IndexWriter对不同的文件进行索引的创建,并将其保存在索引相关文件存储的位置中. 2 通过索引查寻关键字相关文档. 首先,我们需要定义 ...

  4. 【LeetCode-面试算法经典-Java实现】【079-Word Search(单词搜索)】

    [079-Word Search(单词搜索)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a 2D board and a word, find if ...

  5. 用weexplus从0到1写一个app(2)-页面跳转和文章列表及文章详情的编写

    说明 结束连续几天的加班,最近的项目终于告一段落,今天抽点时间开始继续写我这篇拖了很久的<用weexplus从0到1写一个app>系列文章.写这篇文章的时候,weexplus的作者已经把w ...

  6. 亚马逊云推出基于机器学习的企业搜索服务Kendra,剑指微软

    近日,在AWS re:Invent全球大会上,亚马逊发布了五项新的基于机器学习的人工智能 (AI) 服务. 这五项服务包括机器学习驱动的企业搜索.代码审核与分析.欺诈检测.医疗转录和 AI 预测的人工 ...

  7. 【大咖直播】Elastic 企业搜索实战工作坊(第一期)

    借助 App Search 提供的内置功能,您可轻松打造卓越的搜索体验.直观的相关度调整以及开箱即用的搜索分析,不仅可以优化所提供的内容,其提供的 API 还可帮助您将位于各处的所有内容源关联在一起. ...

  8. 【大咖直播】Elastic 企业搜索实战工作坊(第二期)

    借助 App Search 提供的内置功能,您可轻松打造卓越的搜索体验.直观的相关度调整以及开箱即用的搜索分析,不仅可以优化所提供的内容,其提供的 API 还可帮助您将位于各处的所有内容源关联在一起. ...

  9. Beam Search(集束搜索/束搜索)

    找遍百度也没有找到关于Beam Search的详细解释,只有一些比较泛泛的讲解,于是有了这篇博文. 首先给出wiki地址:http://en.wikipedia.org/wiki/Beam_searc ...

  10. iphone H5 input type="search" 不显示搜索 解决办法

    H5 input type="search" 不显示搜索 解决办法 H5 input type="search" 不显示搜索 解决方法 在IOS(ipad iP ...

随机推荐

  1. lisp学习总结(一)

    lisp太简单 lisp核心太简单了只有几个简单的逻辑定理,简单到你会认为他啥事都做不了. lisp语法太简单了,只有符号,参数,以及括号,组成一种万能的表达式. 由于上述lisp的简单,所以对于初学 ...

  2. 我的ubuntu源18和16

    16阿里云的 deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restric ...

  3. 第二次团队作业-需求分析(By七个小矮人)

    第二次团队作业-需求分析 一.格式描述 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/ 这个作 ...

  4. 用 F# 手写 TypeScript 转 C# 类型绑定生成器

    前言 我们经常会遇到这样的事情:有时候我们找到了一个库,但是这个库是用 TypeScript 写的,但是我们想在 C# 调用,于是我们需要设法将原来的 TypeScript 类型声明翻译成 C# 的代 ...

  5. Doxygen -- part 2

    Documenting the code 这个章节涵盖两个主题: 如何在你的代码中放置注释, 一遍doxygen可以在生成的文档中囊括它们. 如何组织一个注释块的内容, 以使得输出美观. 特殊注释块 ...

  6. c/python 的区别

    c             python                                                                                ...

  7. Boyer-Moore 算法 Leetcode169

    Boyer-Moore 算法 Leetcode169 一.题目 169. 多数元素 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假 ...

  8. Maven debug异常:Source not found.

    异常 用Maven debug 时出现了Source not found.,在调试过程中尝试添加源码也没有效果 解决方案 先把当前正在运行中的项目停止 右键项目 -> Debug As -> ...

  9. Kafka动态配置实现原理解析

    问题导读 Apache Kafka在全球各个领域各大公司获得广泛使用,得益于它强大的功能和不断完善的生态.其中Kafka动态配置是一个比较高频好用的功能,下面我们就来一探究竟. 动态配置是如何设计的? ...

  10. Spring Boot 2.x基础教程:默认数据源Hikari的配置详解

    通过上一节的学习,我们已经学会如何应用Spring中的JdbcTemplate来完成对MySQL的数据库读写操作.接下来通过本篇文章,重点说说在访问数据库过程中的一个重要概念:数据源(Data Sou ...