1.什么是搜索?

  百度:我们想要查找想要的一些信息比如在百度搜索一本书,一部电影这就是最常见的搜索 但是百度!=搜索

  垂直搜索(站内搜索)

    互联网的搜索:电商网站,新闻网站,招聘网站,等等

    IT系统的搜索:OA软件,办公系统软件,后台管理系统等的搜索

  总结:搜索就是在任何场景下通过你输入的一些关键字查找到你想要的一些有用的信息

2.如果用数据库做索引会怎么样?

  数据是存储在数据库里的,那么一些网站的搜索比如招聘网站的职位信息的搜索,新闻网站的新闻搜索, 通常来说,从技术的角度来讲我们会很自然想到从数据库表中指定字段中查找出要搜索的内容,想要实现就需要进行全表扫描而且对于每条数据记录的指定文本进行扫描判断是否包含要搜索的关键字这样性能会很低

  要查找的关键字在数据库记录文本中还不能将搜索关键字拆分开来,一旦拆分开来就不能查找到期望的结果

3.什么是全文检索和Lucene?

  全文检索:对数据库中文本信息进行分词处理并且创建一张索引表这样通过关键字查询先从这张分词索引表查找到要查找的词然后根据词对应的数据记录地址在数据库中找到对应的记录

  倒排索引,也常被称为反向索引被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。

  Lucene是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

 

4.什么是ElasticSearch?

  ElasticSearch就是对分布式,全文检索Lucene,数据分析引擎的一个封装,是分布式,高可用,高扩展,高性能的搜索和分析系统

  自动维护数据分布到多个节点的索引的建立,分配多个请求到多个节点的执行

  自动维护数据的冗余副本保证一台机器宕机,不会丢失任何的数据

  封装了更多的高级功能,提供更多的高级支持能够让我们开发更加复杂应用,复杂的搜索功能,聚合分析的功能,基于地理位置的搜索

 

5.ElasticSearch的功能

  分布式的搜索引擎和数据分析引擎

  全文检索,结构化检索,数据分析

  对海量数据进行近实时的处理

 

6.ElasticSearch适用场景

  维基百科:全文检索,高亮,搜索推荐

  Stack overflow 

  GitHub

  电商网站:检索商品

  日志数据分析

  商品价格监控网站

  BI系统

  电商,招聘,门户站内搜索

  IT系统搜索(OA,CRM ERP等)

  数据分析

 

posted on 2017-09-26 01:23  晴空半岛  阅读(197)  评论(0编辑  收藏  举报