search(0)- 企业搜索,写在前面
计划研究一下搜索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)- 企业搜索,写在前面的更多相关文章
- SOLR搭建企业搜索平台
一. SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2 词库:sogou-dic ...
- 用weexplus从0到1写一个app
说明 基于wexplus开发app是来新公司才接触的,之前只是用过weex体验过写demo,当时就被用vue技术栈来开发app的开发体验惊艳到了,这个开发体验比react native要好很多,对于我 ...
- lucene7.1.0实现搜索文件内容
Lucene的使用主要体现在两个步骤: 1 创建索引,通过IndexWriter对不同的文件进行索引的创建,并将其保存在索引相关文件存储的位置中. 2 通过索引查寻关键字相关文档. 首先,我们需要定义 ...
- 【LeetCode-面试算法经典-Java实现】【079-Word Search(单词搜索)】
[079-Word Search(单词搜索)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a 2D board and a word, find if ...
- 用weexplus从0到1写一个app(2)-页面跳转和文章列表及文章详情的编写
说明 结束连续几天的加班,最近的项目终于告一段落,今天抽点时间开始继续写我这篇拖了很久的<用weexplus从0到1写一个app>系列文章.写这篇文章的时候,weexplus的作者已经把w ...
- 亚马逊云推出基于机器学习的企业搜索服务Kendra,剑指微软
近日,在AWS re:Invent全球大会上,亚马逊发布了五项新的基于机器学习的人工智能 (AI) 服务. 这五项服务包括机器学习驱动的企业搜索.代码审核与分析.欺诈检测.医疗转录和 AI 预测的人工 ...
- 【大咖直播】Elastic 企业搜索实战工作坊(第一期)
借助 App Search 提供的内置功能,您可轻松打造卓越的搜索体验.直观的相关度调整以及开箱即用的搜索分析,不仅可以优化所提供的内容,其提供的 API 还可帮助您将位于各处的所有内容源关联在一起. ...
- 【大咖直播】Elastic 企业搜索实战工作坊(第二期)
借助 App Search 提供的内置功能,您可轻松打造卓越的搜索体验.直观的相关度调整以及开箱即用的搜索分析,不仅可以优化所提供的内容,其提供的 API 还可帮助您将位于各处的所有内容源关联在一起. ...
- Beam Search(集束搜索/束搜索)
找遍百度也没有找到关于Beam Search的详细解释,只有一些比较泛泛的讲解,于是有了这篇博文. 首先给出wiki地址:http://en.wikipedia.org/wiki/Beam_searc ...
- iphone H5 input type="search" 不显示搜索 解决办法
H5 input type="search" 不显示搜索 解决办法 H5 input type="search" 不显示搜索 解决方法 在IOS(ipad iP ...
随机推荐
- 【Oracle】内连接、外连接、(+)的使用
表各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 40C 连接分为两种:内连接与外连接. A.内连接 内连接,即最常见 ...
- 【Java面试】Mybatis篇
1.MyBatis编程步骤是什么样的? ① 创建SqlSessionFactory ② 通过SqlSessionFactory创建SqlSession ③ 通过sqlsession执行数据库操作 ④ ...
- doT 这个模板 是怎么实现的?
之前做过一个微信有关的站 模板用 doT 嗯 这个 用起来很 不错. 但是 它是怎么实现的,想过没有? ps:https://github.com/olado/doT 源码总共 140行. 第90行里 ...
- GP工作室—需求分析
团队作业第二次作业--需求分析 问题 答案 这个作业属于哪个课程 软件工程 这个作业要求在哪里 作业要求 团队名称 GP工作室 这个作业的目标 ① 团队项目的需求分析 ②团队项目的原型设计 团队队员介 ...
- C语言寒假大作战01
问题 回答 这个作业属于哪个课程 2019软件四班C语言寒假作业大作战 这个作业要求在哪里 作业要求 我在这个课程的目标是 gitee 与 git基础命令学习与使用 这个作业在那个具体方面帮助我实现目 ...
- laravel aritisan命令大全
1常用命令 显示某个命令的帮助 php artisan -h make:controller 实例命令 php artisan make:controller -r Api/TestControlle ...
- CSDN
链接:https://blog.csdn.net/shaoyedeboke
- 利用jQuery动态添加input输入框,并且获取他的值
动态添加 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...
- GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
问题: 32位程序在64位系统上调用GetModuleFileNameEx()遍历获取64位进程的全路径失败,得到的路径都为空. 根据官方的说法: For the best results use t ...
- Ubuntu下python使用pyenv+virtualenv进行版本和包隔离
安装pyenv 参考:https://github.com/pyenv/pyenv git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo ...