es学习笔记-搜索引擎基本概念

一.搜索引擎

  • 分类:全文、垂直
    (1)全文搜索引擎
    应用于:NLP、爬虫、大数据处理、网页处理、大数据处理
    代表:Google、百度
    (2)垂直搜索引擎
    应用在有明确的搜索目的行为
    代表:电商平台、OA、视频网站、地图网站

  • 搜索引擎的要求
    (1)查询快
    高效的压缩算法
    快速的编码和解码速度

    (2)搜索准
    符合用户期待值高
    评分算法:BM25,TF-IDF

    (3)检索结果丰富
    召回率要求高

二.Lucene(全文搜索引擎)
目的:解决关系型数据库:性能差、不可靠、结果不准确(相关度低)等问题,实现手段:倒排索引

  1. 倒排索引的数据结构
    数据结构:
    1.包含这个关键词的document list
    2.关键词在每个doc中出现的次数 TF term frequency
    3.关键词在整个索引中出现的次数 IDF inverse doc frequency
    4.关键词在当前doc中出现的次数
    5.每个doc的长度,越长相关度越低
    6.包含这个关键词的所有doc的平均长度

  2. Lucene:jar包,就做了两件事:帮我们创建倒排索引,提供了复杂的API
    Lucene:是单点的

  3. 如果用Lucene做集群实现搜索,会有那些问题

    • 节点一旦宕机,节点数据丢失,后果不堪设想,可用性差。
    • 自己维护,麻烦(自己创建管理索引),单台节点的承载请求的能力是有限的,需要人工做负载(雨露均沾)。

三、 Elastic search:分布式/高性能/高可用/可伸缩/易维护 ES≠搜索引擎
1. 分布式的搜索,存储和数据分析引擎。
2. 优点:
1. 面向开发者友好,屏蔽了Lucene的复杂特性,集群自动发现(cluster discovery)
2. 自动维护数据在多个节点上的建立
3. 会帮我做搜索请求的负载均衡
4. 自动维护冗余副本,保证了部分节点宕机的情况下仍然不会有任何数据丢失
5. ES基于Lucene提供了很多高级功能:复合查询、聚合分析、基于地理位置等。
6. 对于大公司,可以构建几百台服务器的大型分布式集群,处理PB级别数据;对于小公司,开箱即用,门槛低上手简单。
7. 相遇传统数据库,提供了全文检索,同义词处理(美丽的cls>漂亮的cls),相关度排名。聚合分析以及海量数据的近实时(NTR)处理,这些传统数据库完全做不到。
3. 应用领域:
1. 百度(全文检索、高亮、搜索推荐)
2. 各大网站的用户行为日志(用户点击、浏览、收藏、评论)
3. BI(Business Intelligence商业智能),数据分析:数据挖掘统计。
4. Github:代码托管平台,几千亿行代码
5. ELK:Elasticsearch(数据存储)、Logstash(日志采集)、Kibana(可视化)

猜你喜欢

转载自blog.csdn.net/tsj11514oo/article/details/120499225