背景

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

全文搜索

  • 数据分类

    • 结构化数据:固定格式或长度有限的数据,如数据库、元数据等
    • 非结构化数据:不定长或无固定格式的数据,如邮件、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

[Java] Solr & Elasticsearch的更多相关文章

  1. 开源搜索引擎solr elasticsearch学习计划

    其实不单单是研究solr elasticsearch把,进行调研性技术学习时,应该制定一些目标以及里程碑.新的技术调研 学习是一件很爽的事,能学到新技术新东西.但是在学习新技术同时,有几个问题是需要我 ...

  2. 使用java操作elasticsearch(1)

    1.安装elasticsearch 这儿用的是5.6.9的版本,下载安装过程较为简单,在官网上下载好后解压到文件夹.需要注意的是在elasticsearch-5.6.9\config下的elastic ...

  3. java使用elasticsearch实现集群管理

    本篇博客主要是查看集群中的相关信息,具体请看代码和注释 @Test public void test45() throws UnknownHostException{ //1.指定es集群 clust ...

  4. java操作elasticsearch实现组合桶聚合

    1.terms分组查询 //分组聚合 @Test public void test40() throws UnknownHostException{ //1.指定es集群 cluster.name 是 ...

  5. java操作elasticsearch实现query String

    1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...

  6. java操作elasticsearch实现聚合查询

    1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...

  7. java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询

    1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...

  8. java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)

    1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...

  9. java操作elasticsearch实现查询删除和查询所有

    后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...

随机推荐

  1. 围绕 Kubernetes 的 8 大 DevOps 生产关键实践

    本文主要介绍 DevOps 的 8 大关键实践在 Kubernetes 平台下如何落地,结合我们目前基于 Kubernetes 平台的 DevOps 实践谈谈是如何贯彻相关理念的,这里不会对其具体实现 ...

  2. MySQL巩固学习记录(一)

    mysql下载安装 一.采用图形化界面安装 (初期只安装server服务端就可以了,别的不多赘述) 二.采用压缩版安装 1.将文件解压缩到自己想要的路径 2. 添加环境变量,即mysql的bin目录 ...

  3. 树结构系列(三):B树、B+树

    树结构系列(三):B树.B+树 文章首发于「陈树义」公众号及个人博客 shuyi.tech,欢迎访问更多有趣有价值的文章. 文章首发于「陈树义」公众号及个人博客 shuyi.tech 平衡二叉树的查找 ...

  4. CIE标准色度系统(下)

    四.色温与相关色温 根据绝对黑体光谱分布特性的普朗克定律,由普朗克公式可以计算出黑体对应于某一温度的光谱分布,并由此应用CIE标准色度系统可获得该温度下黑体发光的三刺激值和色品坐标,从而在色品图上得到 ...

  5. springboot项目整合mybatis

    记录创建springboot项目并配置mybatis中间件: 资源准备及版本说明 编程工具:IDEA JDK版本:1.8 Maven版本:Apache Maven 3.6.3 springboot版本 ...

  6. 原创 Spring Boot 2.3 新特性分层JAR

    背景 在我们实际生产容器化部署过程中,往往会遇到 Docker 镜像很大,部署发布很慢的情况 影响 docker 镜像大小的因素,主要有以下三个方面: 基础镜像的大小 .尽量选择 aphine 作为基 ...

  7. Object.assign()和解构赋值:给对象赋值的两种方法

    一.Object.assign()方法给对象赋值 Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象.它将返回目标对象. 拷贝的是属性值 如果目标对象中的属性 ...

  8. Linux pgrep命令

    1 pgrep pgrep是一个根据名称查找进程ID的命令,返回的是进程ID,若存在当个进程,则分为不同的行返回ID(默认实现). 2 示例 查找java进程: pgrep java 上图还显示了ps ...

  9. jasypt-spring-boot提示Failed to bind properties

    1 问题描述 在Spring Boot中使用jasypt-spring-boot进行加密,但是提示: Description: Failed to bind properties under 'spr ...

  10. Day07_34_集合概述

    集合概述 * 主要集合概述 - 集合相当于现实世界中的容器,主要包含两种存放模式,一个一个的存(Collection), 一对一对存(Map[key,value]) - 集合中只能存储引用数据类型,不 ...