面试精选-solr篇
1.什么是Solr
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
2.Elasticsearch 与 Solr 的比较
1.二者安装都很简单;
2.Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
3.Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
4.Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
5.Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
6.Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
3.为什么要配分词
当我们访问购物网站的时候,我们可以根据我们随意所想的内容输入关键字就可以查询出相关的内容,这是怎么做到呢?这些随意的数据不可能是根据数据库的字段查询的,那是怎么查询出来的呢,为什么千奇百怪的关键字都可以查询出来呢?
答案就是全文检索工具的实现,luncence采用了词元匹配和切分词。举个例子:北京天安门------luncence切分词:北京 京天 天安 安门 等等这些分词。所以我们搜索的时候都可以检索到。
有一种分词器就是IKAnalyzer中文分词器,它有细粒度切分和智能切分,即根据某种智能算法。
这就使用Solr的最大的好处:检索功能的实现。
4.IK分词器原理
本质上是词典分词,在内存中初始化一个词典,然后在分词过程中逐个读取字符,和字典中的字符相匹配,把文档中的所有词语拆分出来的过程
5.Solr的索引查询为什么比数据库要快
Solr使用的是Lucene API实现的全文检索。全文检索本质上是查询的索引。而数据库中并不是所有的字段都建立的索引,更何况如果使用like查询时很大的可能是不使用索引,所以使用solr查询时要比查数据库快
6.Solr的使用步骤
使用步骤;
(1)Solr服务器搭建,因为Solr是用java5开发的,所以需要JDK和Tomcat。搭建部署
(2)搭建完成后,我们需要将要展示的字段引入Solr的库中。配置Spring与Solr结合,工程启动的时候启动Solr
(3)将数据库中的查询内容导入到Solr索引库,这里使用的是SpringDataSolr的客户端实现的。具体使用可以参考API
(4)建立搜索服务,供客户端调用。调用Solr,查询内容,这中间有分页功能的实现。Solr高亮显示的实现。
(5)客户端接收页面的请求参数,调用搜索服务,进行搜索。
7.什么是SolrHome
solrhom相当于存放数据的地方,里面一个个文件相当于数据库,每个数据库里面有两个文件夹,一个data,一个conf,conf下有一个schema.xml文件,配置域,相当于表的字段。
solr中内置了许多的字段类型
8.解释一下什么是solrcore?
solrcore就是solr中的一个实例,也就是索引库,一个solr可以有多个solr实例,多个solr实例之间互不干扰
9.解释一下什么是collection
单机版的solr,collection 就是solrcore 是solr的一个实例(索引库)
SolrCloud中: collection是逻辑结构上solrcore 的集合
在SolrCloud集群中逻辑意义上的完整的索引。它常常被划分为一个或多个Shard,它们使用相同的Config Set。如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用的和Shard相关参数。
10.Solr的域
域的简介:域相当于数据库的表字段,用户存放数据,因此用户根据业务需要去定义相关的 Field
(域),一般来说,每一种对应着一种数据,用户对同一种数据进行相同的操作。
分析根据我们搜索页面的业务域按一下原则进行:
1. 要不要根据此字段进行搜索
2. 此字段结果需不需要显示
3. 用不用的到此字段
满足以上3个条件中的一个,就需要配置为业务:
一般域的配置:
<field name="item_goodsid" type="long" indexed="true" stored="true" />
域为item_goodsid我们在使用spring data solr 的时候会用到这个域
type就是指定这个域存放的数据类型
indexed=true就是需要索引
复制域的配置:
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multivalued="true"/><copyField source="item_title" dest="item_keywords"/><copyField source="item_category" dest="item_keywords"/><copyField source="item_seller" dest="item_keywords"/><copyField source="item_brand" dest="item_keywords"/>
动态域的配置:
<dynamicField name="attr_*" type="string" indexed="true" stored="true" multiValued="true"/>
10.Solr是解决什么问题的?
严格来说,lucene负责数据存储,而solr只是一个引擎提供搜索和插入而已,跟数据库的解释器一样,有什么好处呢,比如一个数据库有一个字段存了1000个字,你想从这些字里面搜一个词的时候,普通的数据库只会让你使用like去查询,他会遍历每个字去模糊匹配,效率很低,而且有些是无法查询的,当然除了像一些特殊的数据库带有分词,比如postgresql,那lucene做的事情就是分词,然后去匹配分词的词中是否有你想搜的词就好了,当然了,为了提高这种检索效率和内存节省底层做了很复杂的事情,可以这么简单的认为,全文搜索这件事情上数据库是无法满足的!
11.Solr的查询
普通域查询
复制域查询
动态域查询
分页查询
分组查询
高亮查询
过滤查询
区间查询
排序查询
12.什么是solrCloud?
SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。
它有几个特色功能:
1)集中式的配置信息
2)自动容错
3)近实时搜索
4)查询时自动负载均衡
13.如何创建solrCloud?
第一步: 搭建zookeeper集群
第二部: 搭建tomcat集群
第三部:配置每个每个solr实例的solrhome
第四部:将solr的配文件上传到zookeeper统一管理
第五步:配置每个solr服务的端口及ip地址
第六步:每一台solr和zookeeper关联
第七部:完成配置启动服务
14.在solrCloud模式下,配置文件保存在哪里?
保存在zookeeper的服务中,可以通过zookeeper的客户端链接查看
15.描述solrCloud的逻辑结构?
索引集合包括两个Shard(shard1和shard2),shard1和shard2分别由2个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上2个Core的索引数据一致,解决高可用问题。
用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。
16.描述solrCloud的物理结构?
三个Solr实例( 每个实例包括两个Core),组成一个SolrCloud。
17.什么是shard的拷贝?
Shard replica(副本),一个shard是由多个副本构成的,注意一个Shard中的replica 包含的内容逻辑上应该是一样的,Shard的数据只是其中一份Replica,不是这些副本的组合。
18.一个shard可以有多少个拷贝?
根据实际的业务需求,最多不超过10个。
19.某一个shard的拷贝中是不是一定有一个拷贝为leader?
不一定,每个shard中不一定都有拷贝的leader,但是如果请求被分配到当前没有leader的shard中,该请求会默认去同级的shard中寻找leader。
20.leader的作用什么?
真正处理请求事务,当某个leader挂掉后,其他的Replica 会从新选举新的leader
21.用哪一个类来管理集群版的solr连接?
使用SpringDataSolr连接Solr集群,连接的是Zookeeper集群
# 集群版连接
spring.data.solr.zk-host=122.51.50.249:2181,122.51.50.249:2182,122.51.50.249:2183
spring.data.solr.repositories.enabled=true
22.solr中有哪些重要的配置文件
solr.xml (配置集群时候使用,配置集群信息例:SolrCloud的ip 端口,连接超时时间等等)
SolrConfig.xml (配置 标签的内容(solr实例需要的jar),请求的处理)
Schema.xml(配置filed,配置filedType,配置分析器)
23.solr集群必须依赖zookeeper吗
不是。但是使用zookeeper是最方便
24.多张表的数据导入solr(解决id冲突)
在schema.xml中添加uuid,然后solrconfig那边修改update的部分,改为使用uuid生成
面试精选-solr篇相关推荐
- 计算机考研英语自我介绍范文,研究生考研英语面试自我介绍范文(精选4篇)...
研究生考研英语面试自我介绍范文(精选4篇) 当来到一个陌生的'地方时,通常需要我们进行自我介绍,通过自我介绍可以得到他人的认识.写自我介绍可不能随随便便哦,以下是小编为大家整理的研究生考研英语面试自我 ...
- 计算机专业夏令营英语面试范文,研究生夏令营面试英语自我介绍范文(精选5篇)...
研究生夏令营面试英语自我介绍范文(精选5篇) 当我们在一个陌生场合中,常常需要我们进行自我介绍,通过自我介绍可以得到他人的欣赏.到底应如何写自我介绍呢?以下是小编精心整理的研究生夏令营面试英语自我介绍 ...
- 计算机英语口语面试自我介绍,英语口语的简单面试自我介绍(精选7篇)
英语口语的简单面试自我介绍(精选7篇) 来到一个陌生的地方时,我们就有可能用到自我介绍,自我介绍是我们重新认识自己的开始.现在你是否对自我介绍一筹莫展呢?下面是小编帮大家整理的英语口语的简单面试自我介 ...
- 大学英语期末考计算机上答卷,英语期末考试总结范文(精选5篇)
英语期末考试总结范文(精选5篇) 总结是事后对某一时期.某一项目或某些工作进行回顾和分析,从而做出带有规律性的结论,它可以给我们下一阶段的学习和工作生活做指导,我想我们需要写一份总结了吧.如何把总结做 ...
- 架构师之路16年精选50篇_2011年精选
架构师之路16年精选50篇 I did a "Greatest Hits" blog post in 2008, and since this year is winding do ...
- 大学英语期末考计算机上答卷,英语期末考试总结(精选7篇)
英语期末考试总结(精选7篇) 总结是指对某一阶段的工作.学习或思想中的经验或情况加以总结和概括的书面材料,它在我们的学习.工作中起到呈上启下的作用,让我们一起来学习写总结吧.总结怎么写才能发挥它的作用 ...
- 计算机专业大学新学年计划,大学的新学期的学习计划(精选5篇)
大学的新学期的学习计划(精选5篇) 时间是箭,去来迅疾,我们又将迎来新的学习目标,续写新的诗篇,写一份学习计划,为接下来的学习做准备吧!做好学习计划可是让你提高学习效率的方法喔!下面是小编精心整理的大 ...
- 一位中学计算机老师的英语作文,我的老师英语作文(精选14篇)
我的老师英语作文(精选14篇) 在平时的学习.工作或生活中,大家都不可避免地会接触到作文吧,通过作文可以把我们那些零零散散的思想,聚集在一块.你所见过的作文是什么样的呢?以下是小编帮大家整理的我的老师 ...
- 计算机老师用英语应聘,应聘计算机教师个人自荐书(精选6篇)
应聘计算机教师个人自荐书(精选6篇) 在我们平凡的日常里,越来越多地方需要用到自荐书,自荐书根据用途的不同也有着不同的类型.还是对自荐书一筹莫展吗?下面是小编精心整理的应聘计算机教师个人自荐书(精选6 ...
- 计算机没考好检讨,考试没考好检讨书范文(精选6篇)
考试没考好检讨书范文(精选6篇) 在学习.工作.生活中出现了失误后,为了避免再犯,就需要写一份自我检讨书好好进行自我检讨,写检讨书是为了能够不断提醒自己.那么问题来了,到底应如何写检讨书呢?以下是小编 ...
最新文章
- Variant Analysis(变种分析)——使用已知漏洞发掘未知漏洞
- HDFS的读文件、写文件过程
- 虚拟机ubuntu/pytorch/python出现killed已杀死
- JVM生产环境参数实例及分析
- GDCM:gdcm::Decoder的测试程序
- OpenAPI实现云主机闪电交付最佳实践
- bigint最大有多少位_一台 Java 服务器可以跑多少个线程?
- 高清摄像头MIPI接口与ARM连接【转】
- [汇编语言]常用命令
- group by配合“聚合函数”才有意义
- JavaWeb知识总结
- mac 中 将Pdf文件转kindle格式mobi文件教程
- 中兴新支点操作系统上如何查找文件
- 手机端开发(uni-app、vant、mui)优缺点分析
- 中国二十五首必听的网络原创歌曲
- android textview 字母数字键盘,android数字键盘怎样设置成默认的
- 微信小程序直接打开文件操作(pdf)
- 裸辞3个月,空白期啥都没干,怎么办?
- Vue动态设置路由title
- 【小白向C语言】从一到n的累加(大数版)学习笔记