版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Solr面试题及详细答案(实战完整版)一、基础概念类1、简单说说你对Solr的理解,它是什么、主要用途是什么?Solr是一款基于Lucene开发的开源分布式全文检索引擎,是企业级的搜索服务框架。它封装了Lucene底层复杂的检索逻辑,对外提供HTTP接口,不用深入底层源码就能快速搭建高性能的搜索服务。核心用途主要有三个:第一,实现海量数据的全文检索,比如商品搜索、文章检索、日志检索;第二,实现数据的精准过滤、排序、分组、高亮展示;第三,支撑大数据量的快速查询,弥补数据库模糊查询效率极低的问题。相比于数据库like查询,Solr支持分词、模糊匹配、权重排序,查询速度快几个数量级。2、Solr和Lucene的区别和联系?联系:Solr底层核心检索能力完全依赖Lucene,Lucene是Solr的内核,Solr所有的索引、检索逻辑都是基于Lucene实现的。区别:Lucene是底层工具库,是jar包,没有独立服务,需要开发者手动编码整合;Solr是独立可运行的服务,内置Web容器,直接启动即可使用。Lucene只提供基础的索引、查询API,不支持集群、分片、副本、自动运维;Solr在Lucene基础上封装了企业级功能,支持集群部署、数据同步、权限配置、可视化管理。Lucene适合小型项目、自定义检索场景;Solr适合大型项目、分布式、高并发的搜索业务场景。3、Solr和Elasticsearch的区别?工作中如何选择?核心区别:架构:Solr基于传统Web容器,早期是单体架构,集群依赖Zookeeper管理;ES原生分布式架构,无独立Web容器,轻量化部署。实时性:Solr近实时搜索,数据写入后有短暂刷新延迟;ES实时性更强,更适配日志实时收集检索场景。功能侧重:Solr更擅长传统全文检索、结构化查询、facet统计、业务搜索;ES更擅长大数据日志分析、时序数据检索、聚合统计。运维:Solr运维相对繁琐,配置文件较多;ES部署简单、生态更丰富,市面上日志系统基本都适配ES。选择原则:传统业务搜索、电商商品搜索、结构化数据检索、追求查询稳定性选Solr;实时日志分析、海量时序数据、大规模集群日志检索选ES。4、什么是全文检索?和数据库模糊查询有什么区别?全文检索是对文本内容进行分词处理,建立倒排索引,通过索引快速匹配关键词的检索方式。和数据库模糊查询的核心区别:效率:数据库like%关键词%不走索引,全表扫描,数据量大时极慢;全文检索基于倒排索引,毫秒级返回结果。能力:数据库模糊查询只能做简单字符串匹配,不支持分词、权重、高亮、相似度排序;Solr支持中文分词、关键词权重匹配、结果高亮、分组排序、模糊纠错。场景:数据库适合精准查询、少量数据模糊匹配;Solr适合海量文本、复杂搜索业务。二、核心原理与索引机制1、Solr倒排索引的原理是什么?普通数据库是正向索引,格式是「文档ID-文档内容」,查询时需要遍历所有文档匹配关键词。倒排索引是反向映射,核心格式是分词词条-对应文档ID、出现位置、出现频次。流程:Solr写入文档时,先对文本字段分词,拆分出关键词,然后建立词条和文档的关联关系,并记录词条的权重、位置等信息。检索时,直接通过关键词找到对应的所有文档,无需全量遍历,所以速度极快。倒排索引也是Solr高性能检索的核心基础。2、Solr索引创建、更新、删除的流程是怎样的?索引创建:客户端通过HTTP提交文档数据,Solr接收数据后,根据字段配置的分词器对文本分词,生成词条,构建倒排索引,同时存储文档原始数据,写入内存缓冲区。索引更新:Solr不支持原地修改索引。更新数据本质是「先删除旧文档,再新增新文档」,通过唯一文档ID匹配旧数据,删除原有索引,重新构建新索引。索引删除:分为按ID删除和按条件删除。删除后不会立刻清理磁盘索引,只是标记为删除状态,查询时会过滤掉标记数据,后续通过合并索引操作彻底清理废弃数据。3、Solr的Field和FieldType有什么区别?常用字段类型有哪些?FieldType:字段类型模板,定义字段的数据类型、分词规则、索引规则、存储规则,是通用配置,所有同类型字段可以复用。Field:具体业务字段,绑定对应的FieldType,定义字段名称、是否索引、是否存储、是否分词、是否必填等具体属性。常用字段类型:string(不分词,精准匹配)、text_ik/text_smartcn(中文分词文本)、int、long、double、date、boolean。4、index、store、docValues三个属性的作用和区别?index:是否建立索引。true表示该字段参与分词、检索、匹配;false无法通过该字段查询,仅做数据展示。搜索字段必须开启index。store:是否存储原始数据。true表示查询结果可以返回该字段原始值;false不存储,无法直接返回。主键、展示字段需要开启store。docValues:正排索引,专门用于排序、分组、聚合、facet统计。开启后可以大幅提升聚合排序效率,不参与检索。需要排序、统计的字段建议开启。5、Solr分词流程是什么?常用中文分词器有哪些?分词流程:文档写入Solr后,根据字段绑定的分词器,对文本进行切割、过滤、去停用词,生成有效词条,最终基于词条构建倒排索引。常用中文分词器:IK分词器:最常用,支持细粒度、粗粒度分词,适配大部分业务搜索场景;SmartCN:Solr官方自带中文分词,分词精度一般,适合简单场景;Jieba分词:开源轻量,适配小众场景。三、查询与检索核心1、Solr常用查询语法有哪些?日常开发高频使用的语法:精准查询:字段名:关键词,如id:1001模糊查询:*匹配任意字符,如title:手机*范围查询:[起始TO结束],如price:[100TO1000]布尔查询:AND、OR、NOT,多条件组合筛选短语查询:""包裹关键词,精准匹配连续文本,如title:"华为手机"权重查询:^提高关键词权重,如title:华为^2手机2、Solr分页原理?和MySQL分页有什么不同?深分页问题怎么解决?Solr分页通过start、rows两个参数实现,start是起始偏移量,rows是每页条数。和MySQL分页逻辑基本一致,但底层不同:MySQL基于数据行偏移,Solr基于索引结果偏移。深分页问题:当start数值很大(比如start=10000),Solr需要检索并跳过前10000条数据,内存开销大,查询速度急剧下降。解决方案:业务层面禁止深分页,使用游标分页(cursorMark)替代传统分页,适合海量数据滚动查询,无偏移开销。3、Solr高亮搜索怎么实现?原理是什么?Solr内置高亮组件,通过配置hl相关参数实现关键词高亮。核心原理:检索到匹配文档后,Solr提取文档对应字段的原始文本,匹配查询关键词,用自定义html标签包裹关键词,返回带标记的文本内容,前端直接渲染高亮效果。常用参数:hl=true(开启高亮)、hl.fl(指定高亮字段)、hl.simple.pre/hl.simple.post(自定义高亮标签)。4、什么是Facet查询?日常用在什么场景?Facet是Solr的聚合统计功能,可以对查询结果进行分类统计、数量汇总,无需自己代码遍历统计。常见场景:电商搜索的品牌筛选、价格区间筛选、分类筛选,搜索页面展示「华为(200)、小米(180)」这种带数量的分类数据。支持字段聚合、区间聚合、日期聚合、多维度聚合。四、集群与架构1、SolrCloud集群架构原理?核心组件作用?SolrCloud是Solr分布式集群模式,核心依赖Zookeeper实现集群管理、配置同步、节点协调,实现高可用、海量数据分片存储。核心组件:Zookeeper:集群管家,统一管理集群配置、节点状态、分片和副本信息,实现配置文件同步、故障节点感知。Collection:集群核心数据集,相当于数据库的库,一个Collection包含多个分片。Shard(分片):数据拆分单元,将海量数据拆分到多个分片,分散存储压力,提升查询和写入并发。Replica(副本):分片的备份节点,一个分片配置多个副本,实现故障容错,主节点挂掉后,副本自动升级为主节点,保证服务可用。2、Solr分片和副本的区别?生产环境如何配置?分片(Shard):解决海量数据存储和读写并发问题。数据会按照路由规则分散到不同分片,分片越多,数据拆分越细,读写性能越高。副本(Replica):解决高可用、容灾问题。副本是分片数据的备份,不分担写入压力,仅分担查询压力,主节点故障自动切换。生产配置经验:中小业务3分片、2副本;海量高并发业务5-8分片、2副本,兼顾性能和容灾。3、Solr集群数据写入和查询的路由机制?写入路由:默认根据文档唯一ID进行哈希运算,通过哈希值匹配对应的分片,将数据写入指定分片,保证数据均匀分布在各个分片。查询路由:客户端发起查询请求,请求会转发到所有分片,各分片独立检索数据,汇总结果后统一排序、分页,最终返回完整数据。4、Solr集群如何实现高可用?节点容错:每个分片配置多个副本,主节点宕机,Zookeeper检测到节点状态异常,自动选举副本节点为主节点,无缝切换,服务不中断。配置高可用:所有配置文件统一托管Zookeeper,集群所有节点同步配置,新增节点自动拉取配置。负载均衡:查询请求会分散到主节点和所有副本节点,分担查询压力,提升并发能力。五、性能优化与实战问题1、Solr写入性能优化方案?批量写入:禁止单条循环写入,使用批量提交接口,一次提交多条数据,减少网络IO开销。优化提交策略:合理设置自动提交时间和文档数量,避免频繁手动commit,减少索引频繁刷新开销。关闭不必要配置:写入阶段临时关闭高亮、facet统计、副本同步,写入完成后再开启。集群分片优化:根据数据量合理增加分片数量,分散写入压力。优化内存配置:合理调整JVM堆内存,避免内存溢出或频繁GC。2、Solr查询速度慢的原因及优化手段?常见原因:查询条件不合理、深分页、未开启docValues、分词字段过多、索引碎片过多、集群负载过高。优化方案:字段优化:仅检索字段开启分词和索引,排序、聚合字段开启docValues,无用字段关闭索引和存储。查询优化:避免*全模糊查询、避免深分页,使用游标分页,精简查询条件。索引优化:定时执行索引合并(optimize),清理删除标记的废弃索引,减少索引碎片。缓存优化:开启Solr自带的查询缓存、字段缓存、结果缓存,缓存高频查询结果。集群优化:合理扩容分片和副本,分担查询并发压力。3、Solr缓存有哪些?各自作用?filterCache:过滤器缓存,缓存查询过滤条件的结果集,适合高频筛选条件,大幅提升过滤查询速度。queryResultCache:查询结果缓存,缓存高频查询的文档ID、排序结果,避免重复检索索引。documentCache:文档缓存,缓存文档原始数据,减少磁盘读取开销。fieldValueCache:字段值缓存,缓存字段数据,优化排序、分组、聚合效率。4、Solr索引碎片产生的原因?如何处理?Solr每次新增、删除、更新数据都会生成新的索引段,频繁操作会产生大量小索引段,也就是索引碎片。碎片过多会导致查询时需要遍历多个索引段,降低查询效率,占用多余磁盘空间。处理方式:通过optimize命令手动合并索引,将多个小索引段合并为一个完整索引,清理废弃数据。生产环境建议低峰期定时执行,避免高峰期合并占用大量资源。5、Solr数据同步方案有哪些?全量同步:定时从数据库批量查询全量数据,批量导入Solr,适合数据更新不频繁的场景。增量同步:基于数据库时间戳、自增ID,定时拉取新增和修改数据,同步到Solr,减少同步开销。CDC实时同步:监听数据库binlog日志,实时捕获数据增删改操作,同步到Solr,适配实时搜索业务。SolrDataImport工具:Solr自带数据导入工具,配置规则后自动同步数据库数据,简单场景可直接使用。六、故障与面试高频实战题1、Solr数据丢失可能的原因?如何避免?常见原因:未执行commit服务重启、索引文件损坏、节点故障未同步副本、批量写入异常中断。避免方案:开启自动提交、重要写入手动commit、配置副本容灾、定期备份索引数据、集群部署避免单点故障。2、Solr节点宕机如何处理?集群环境下,单个节点宕机不会影响服务,Zookeeper会自动感知,副本节点立刻接管服务,读写请求自动切换。处理流程:重启故障节点,节点重启后自动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国一次性使用鲁米尔套线器市场现状数据分析及前景预测报告
- 2026及未来5年中国45°承口弯头市场现状数据分析及前景预测报告
- 《企业办事指南》课件
- 裕精橡塑科技(扬州)有限公司介绍企业发展分析报告模板
- 2026年中国核能发电行业市场监测及投资环境评估预测报告
- 2026事业单位工勤技能-广东-广东林木种苗工二级(技师)历年参考题库含答案详解
- 2026事业单位工勤技能-山西-山西经济岗位工三级(高级工)历年参考题库含答案详解
- 2026事业单位工勤技能-山西-山西房管员一级(高级技师)历年参考题库含答案详解
- 2026事业单位工勤技能-山西-山西保育员一级(高级技师)历年参考题库含答案详解
- 2026山东事业单位财会岗结构化面试历年真题题库
- 2026年云南省昆明市公安招聘辅警考试试卷带答案
- 26年秋八年级历史1-12课材料研读想一想课后活动答案
- 初中化学中考复习中和反应及反应后溶液成分探究教学设计
- 2026年初级注册安全工程师考试题库(附答案)
- 纪念中国工农红军长征胜利90周年应知应会100题及答案解析
- 新教材部编人教版五年级上册道德与法治(课件)第11课走进新时代
- DB53T 1176.1-2023 云南省行政村、社区编码 第1部分:总则
- 2026上海城投水务校园招聘103人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年酸枣仁行业分析报告及未来发展趋势报告
- 2026年中考历史考前冲刺:小论文 满分方法指导讲义
- 金矿详查实施方案
评论
0/150
提交评论