• [Java] Solr & Elasticsearch


    背景

    • 实现网站自带的搜索功能,如淘宝中的商品搜索

    全文搜索

    • 数据分类
      • 结构化数据:固定格式或长度有限的数据,如数据库、元数据等
      • 非结构化数据:不定长或无固定格式的数据,如邮件、word文档等
    • 搜索分类
      • 结构化数据搜索:关系型数据库
      • 非结构化数据搜索:顺序扫描(低效)/全文搜索
    • 索引
      • 从非结构化数据中提取出的然后重新组织的信息
      • 非结构化数据->有一定结构的数据
      • 对组织后的数据进行搜索
    • 倒排索引
      • 存储在全文搜索下某个单词在一个或一组文档中的存储位置的映射
      • 文档检索系统中最常用的数据结构
    • 场景
      • 搜索的数据对象是大量的非结构化的文本数据
      • 文件记录量达到数十万或数百万个甚至更多
      • 支持大量基于交互式文本的查询
      • 需求非常灵活的全文搜索查询
      • 对高度相关的搜索结果的有特殊需求,但是没有可用的关系数据库可以满足
      • 对不同记录类型、非文本数据操作或安全事务处理的需求相对较少的情况

    Lucene

    • 全文搜索引擎
    • 一个代码库和API
    • 思路
      • 搜集数据
      • 通过数据创建索引
      • 用户输入关键字
      • 通过关键字创建查询器
      • 根据查询器到索引里获取数据
      • 把查询结果展示给用户

    Solr

    • 一种非关系(no sql)数据库搜索/存储引擎
    • 封装了Lucene,有HTTP接口
    • 可以和Hadoop一起使用
    • Hadoop处理大量数据,Solr从中找需要的信息
    • 与数据库的区别
      • 搜索速度比关系型数据库快,一般在网站中单独处理搜索功能
      • 数据库不能实现分词效果,只能用模糊查询,效率很低
    • 原理:倒排索引,B+树
    • IK Analyzer:开源的java中文分词工具包

    elasticsearch

    • 封装了Lucene
    • 分布式、多租户能力的全文搜索引擎
    • 具有HTTP Web页面和无架构JSON文档
    • 和Solr相比,更易于使用

    参考

    Solr介绍

    https://blog.csdn.net/luo609630199/article/details/82494708

    Solr原理

    https://www.liangzl.com/get-article-detail-134667.html

    全文搜索 Solr Elasticsearch

    https://www.cnblogs.com/jajian/p/9801154.html

    Solr Elasticsearch 性能比较

    https://blog.csdn.net/jameshadoop/article/details/44905643

  • 相关阅读:
    Dex-Net笔记
    python笔记
    linux和anaconda
    JPA和Hibernate的关系
    eclipse利用JPA,根据数据库表生成Java中的实体类
    eclipse中利用hibernate插件,根据数据库表反向生成Javabean
    eclipse中git常用操作说明
    oracle常用语法
    threadlocal
    spring用到的一些注解小札
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12526405.html
Copyright © 2020-2023  润新知