lucene

ElasticSearch 与 Solr 对比

拟墨画扇 提交于 2020-11-04 16:44:44
版本:ElasticSearch 7.6.1 6.x 7.x 的区别十分大,6.x API (原生API、RestFul 高级!) Lucene 是一套信息检索工具包!jar包!,不包含搜索引擎系统!包含:索引结构、读写索引的工具、排序、搜索规则...工具类。 Lucene 和 ElasticSearch 关系 ElasticSearch 是基于Lucene 做了一些封装和增强(我们上手是十分简单!) ElasticSearch概述 ElasticSearch,简称为es,es是一个开源的 高扩展 的 分布式全文检索引擎 ,它可以 近实时的存储、检索数据 ;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用Java 开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。 据国际权威数据库产品评测机构DB Engines的统计,在2016年1月,ElasticSearch已超过Solr等, 成为排名第一的搜索引擎类应用 。 历史 多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。

想去阿里?就不要错过这些Java面试题

南笙酒味 提交于 2020-11-02 18:43:04
前言 相信很多小伙伴都想去大厂工作,今天小编给大家分享下阿里Java面试题和面试流程,希望能够帮助到各位小伙伴。 面试流程 先说下面试流程,一般大公司都有3-4轮技术面,1轮的HR面。 前面几轮技术面主要问的是一些基础、项目实现和拓展,最后一轮技术面是部门老大面,主要就问一些架构、技术和业务的理解,因为这个时候他看的就是你的潜力,就是看你有没有培养的价值。 HR面主要就是跟你聊聊天,很多人在HR面后挂了,一般不是因为你不表现不好,可能是你之前几面的表现一般,公司基于hc、人才配比、与其他候选人的对比等多个维度考虑,最终决定是否给你offer。 下面列出了一面问到的问题: 阿里一面(电面) synchronized与lock的区别,使用场景。看过synchronized的源码没 JVM自动内存管理,Minor GC与Full GC的触发机制 了解过JVM调优没,基本思路是什么 如何设计存储海量数据的存储系统 缓存的实现原理,设计缓存要注意什么 淘宝热门商品信息在JVM哪个内存区域 操作系统的页式存储 volatile关键字的如何保证内存可见性 happen-before原则 Lucene全文搜索的原理 阿里二面: 自我介绍下自己,不超过3分钟 你说你熟悉并发编程,那么你说说Java锁有哪些种类,以及区别 如何保证内存可见性 Http请求的过程与原理 TCP连接的特点

solr的安装(windows)和使用

…衆ロ難τιáo~ 提交于 2020-10-30 07:47:32
介绍 Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码, Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如 Nutch、 Luke)也可以使用Solr 创建的索引。 总结一下:solr是一个java搜索引擎服务器(是一套war程序),内部集成了Lucene(apache提供的一些对搜索引擎做支持的jar包)。 Solr服务搭建 官网下载solr4.9.1的程序安装包。 下载地址: http://archive.apache.org/dist/lucene/solr/ 解压solr的zip包 将dist\solr-4.9.1.war文件复制到tomcat的webapps目录下,并将文件命名为solr.war 复制solr解压包下example\lib\ext 下所有的jar 到tomcat

排序--冒泡排序

时光总嘲笑我的痴心妄想 提交于 2020-10-28 09:24:56
按照由小到大的顺序排列,冒泡排序基本步骤: 1、比较相邻两个数值的大小,将数值大的交换到数值小的后面,数据交换的时候需要1个临时变量空间; 2、对剩下的n-1个数值重复1的步骤,直到剩下的数值个数为1。 比如5,4,3,2,1的排序步骤如下: 第一遍:4、5、3、2、1; 4、3、5、2、1; 4、3、2、5、1; 4、3、2、1、5 第二遍:3、4、2、1、5; 3、2、4、1、5; 3、2、1、4、5 第三遍:2、3、1、4、5; 2、1、3、4、5 第四遍:1、2、3、4、5 时间复杂度为: 数据交换次数与时间复杂度一样。 当数据本身有序时如1、2、3、4、5,可以在以上的步骤进行优化,即在第一遍过程中发现没有数据发生交换就可以判断数据已经有序,此时的时间复杂度为N-1。当数据基本有序时如2、3、1、4、5,比较的次数永远都是上述最坏时间复杂度,但是数据交换的次数会少点。由于在绝大部分情况下,给定的数据极少是已经有序的,所以冒泡排序的平均时间复杂度是N*(N-1)/2 这里并没有用大O表示法,因为在实际的排序算法中,当数据个数到一定程度时会使用其它排序算法,比如在lucene中IntroSorter下,元素个数达到20的时候用二分插入排序,至于这个20是怎么来的,个人认为只有把完整的时间复杂度公式表达出来才能求出。 冒泡排序算法是稳定的,因为当相邻的数据相同时不会发生位置交换

ElasticSearch搜索引擎入门基础(详细步骤)

我的未来我决定 提交于 2020-10-24 18:39:27
ElasticSearch 概述: 学习,从百度开始。 以下是Elasticsearch百度百科的介绍,如果已经了解,可以跳过。 ​ Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。 ​ Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。 ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。 ​ Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候

ElasticSearch入门(一)主要概念汇总

本小妞迷上赌 提交于 2020-10-24 06:58:24
背景 最近项目中需要做一些大数据的全文检索功能,以前项目中都是基于 Lucene 进行的开发。而随着互联网技术架构的发展,近几年搜索引擎技术发展迅速,其中ElasticSearch进行技术的预演。 的热度一直都在搜索引擎排在前面,它的实时搜索、稳定、分布式、REST API 封装都是它的特点。结合网上其他资料对比,这个项目也打算使用 ElasticSearch 进行技术的预演。 预演步骤 既然技术选型已经确定,接下来就是围绕这个目标进行一步一步的任务细化。而且因为时间线不能拉太长,所以目前是先能够和业务集成,对应一些底层的集群、分片等原理性的内容,放到最后再去深入了解。 了解 ElasticSearch 基本概念,基本原理 了解 ElasticSearch 基本使用方法,如何安装、创建索引、检索,分布式等。 和实际业务结合,开发集成 ElasticSearch 。 了解 ElasticSearch 更多细节的东西,优化,扩展等。 本文主要介绍一些 ElasticSearch 基本概念,以及和 Apache solr 的一些对比。 基本概念 什么是elasticsearch? ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的

ElasticSearch集群内的原理

随声附和 提交于 2020-10-22 19:26:39
ElasticSearch 的主旨是随时可用和按需扩容。 而扩容可以通过购买性能更强大( 垂直扩容 ,或 纵向扩容 ) 或者数量更多的服务器( 水平扩容 ,或 横向扩容 )来实现。 虽然 Elasticsearch 可以获益于更强大的硬件设备,但是垂直扩容是有极限的。 真正的扩容能力是来自于水平扩容—​为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中。 对于大多数的数据库而言,通常需要对应用程序进行非常大的改动,才能利用上横向扩容的新增资源。 与之相反的是,ElastiSearch天生就是 分布式的 ,它知道如何通过管理多节点来提高扩容性和可用性。 这也意味着你的应用无需关注这个问题。 本章将讲述如何按需配置集群、节点和分片,并在硬件故障时确保数据安全。 空集群 如果我们启动了一个单独的节点,里面不包含任何的数据和索引,那我们的集群看起来就是一个 Figure 1, “包含空内容节点的集群” 。 Figure 1. 包含空内容节点的集群 一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。 当一个节点被选举成为 主 节点时, 它将负责管理集群范围内的所有变更,例如增加、删除索引

MySQL性能调优【一】

帅比萌擦擦* 提交于 2020-10-22 10:35:59
目录 前言 使用explain 分析你SQL的计划 关键字的慎用 避免判断 null 值 避免使用 or 逻辑 慎用 in 和 not in 逻辑 Inner join 、left join、right join,优先使用Inner join,如果是left join,左边表结果尽量小 exists的合理使用 慎用distinct关键字 尽量用 union all 替换 union 查询优化 GROUP BY关键字优化 查询SQL尽量不要使用select *,而是select具体字段 优化limit分页 知道查询结果为一条记录,建议使用limit 1 注意模糊查询 避免查询条件中字段计算 避免查询条件中对字段进行函数操作 避免不等值判断 对查询进行优化,应考虑在 where 及 order by 涉及的列上建立索引,尽量避免全表扫描。 where子句中考虑使用默认值代替null。 where子句 “= ” 左边注意点 不要定义无意义的查询 索引优化 在适当的时候,使用覆盖索引。 索引无关优化 索引也可能失效 组合索引使用 索引优化总结 其它注意事项 表格字段类型选择 如果插入数据过多,考虑批量插入 count(*) 和 count(1)和count(列名)区别 前言 sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种情况。 网速不给力,不稳定。 服务器内存不够