精华内容
下载资源
问答
  • solr面试题

    千次阅读 2020-03-19 21:51:30
    solr面试题 Solr 1. 是什么? 化繁为简的介绍一下这个技术是干嘛的 solr是基于Lucene的,主要用作全文检索。 2. 同类型技术 ElasticSearch,这个时候很自然的需要去了解两种技术的简单区别。 ElasticSearch vs Solr...

    solr面试题

    Solr

    1. 是什么?
    化繁为简的介绍一下这个技术是干嘛的

    solr是基于Lucene的,主要用作全文检索。

    2. 同类型技术
    ElasticSearch,这个时候很自然的需要去了解两种技术的简单区别。

    ElasticSearch vs Solr多维度分析对比

    3. 大概介绍介绍?
    最好加入自己的一些心得和总结

    2个端(服务端+客户端)
    涉及到服务器安装配置和客户端操作。

    服务端,安装就是解压一个war包,添加一些jar包,配置scheme.xml

    solr的客户端,客户端操作可以用solrj或者spring-data-solr,到时候也可以进行二次封装,也可以不需要,因为都是封装给了service层,controller直接传入对象给service层就可以了。

    项目使用spring-data-solor的情况

    项目使用solrj的情况

    solr的客户端,主要就是学会 索引库的操作 和 各种条件的搜索

    索引库的操作:
    新增、删除、更新

    各种条件的搜索:
    普通域查询
    复制域查询
    动态域查询
    分页查询
    分组查询
    高亮查询
    过滤查询
    区间查询
    排序查询

    4. 具体使用
    这里开始再说具体的使用

    服务端安装
    解压一个solr-4.10.3.war
    拷贝example/lib/ext下的日志输出包

    配置solrhome
    配置(修改schema.xml)

    配置中文分词器,IK Analyzer
    配置域、复制域、动态域

    客户端操作
    这里开始再说具体的使用
    能记住记过算几个,记不住也正常

    a) solrj
    关键的几个类
    主要是solrServer完成文档操作和搜索
    solrServer,SolrInputDocument,SolrQuery,SearchResult

    b) spring-data-solr
    关键的几个类
    主要是SolrTemplate完成文档操作和搜索
    SolrTemplate、Query、Criteria

    5. 实际应用场景
    这个是非常重要的,实际项目中用solr完成了什么,也可以优先告知面试官。

    6. 可以拓展拓展
    solr会考虑集群
    solr索引库在商品状态发生改变的时候(审核通过、删除),会通过activeMQ通知更新。
    solr搜索结果,可以通过redis缓存

    7. 表表态
    solr还是不难,自己做搜索没啥问题,大概2、3天就能完成复杂的搜索情况。

    1. Solr 是什么?

    Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。
    Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。
    可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。
    2. List item

    Solr的特性包括:

    高级的全文搜索功能

    专为高通量的网络流量进行的优化

    基于开放接口(XML和HTTP)的标准

    综合的HTML管理界面

    可伸缩性-能够有效地复制到另外一个Solr搜索服务器

    使用XML配置达到灵活性和适配性

    可扩展的插件体系

    1. Lucene 是什么?

    Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta(雅加达) 家族中的一个开源项目。也是目前最为流行的基于Java开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于 Lucene ,比如Eclipse 帮助系统的搜索功能。Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。

    2. Solr vs Lucene

    Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的
    Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。
    Lucene本质上是搜索库,不是独立的应用程序,而Solr是。
    Lucene专注于搜索底层的建设,而Solr专注于企业应用。
    Lucene不负责支撑搜索服务所必须的管理,而Solr负责。
    所以说,一句话概括 Solr: Solr是Lucene面向企业搜索应用的扩展

    3.Solr加入中文分词器

    中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器。目前可用的分词器有smartcn,IK,Jeasy,庖丁。其实主要是两种,一种是基于中科院ICTCLAS的隐式马尔科夫HMM算法的中文分词器,如smartcn,ictclas4j,优点是分词准确度高,缺点是不能使用用户自定义词库;另一种是基于最大匹配的分词器,如IK ,Jeasy,庖丁,优点是可以自定义词库,增加新词,缺点是分出来的垃圾词较多。

    4.Solr 加上 EmbeddedSolrServer(嵌入式服务器)

    使用Solr 加上 EmbeddedSolrServer(嵌入式服务器),方便进行代码跟踪调试.在功能上和其它服务器都是一样的,它们都是继承的SolrServer来提供服务API的. EmbeddedSolrServer优点是不用起http协议,直接加载SolrCore进行操作,性能上应该是最快的,方便用于把Solr单结点服务嵌入到项目中使用.

    5.Elasticsearch vs solr

    Elasticsearch跟Solr一样,也是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口

    1、Elasticsearch的优缺点:

    优点:
    1.Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
    2.Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
    3.处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。
    4.Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
    5.各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
    缺点:
    1.只有一名开发者(当前Elasticsearch GitHub组织已经不只如此,已经有了相当活跃的维护者)
    2.还不够自动(不适合当前新的Index Warmup API)

    2、Solr的优缺点:

    优点
    1.Solr有一个更大、更成熟的用户、开发和贡献者社区。
    2.支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
    3.Solr比较成熟、稳定。
    4.不考虑建索引的同时进行搜索,速度更快。
    缺点
    1.建立索引时,搜索效率下降,实时索引搜索效率不高。
    2、Elasticsearch 与 Solr 的比较:

    1.二者安装都很简单;
    2.Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
    3.Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
    4.Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
    5.Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
    6.Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

    使用案例:
    1.维基百科使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。
    2.英国卫报使用Elasticsearch来处理访客日志,以便能将公众对不同文章的反应实时地反馈给各位编辑。
    3.StackOverflow将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。
    4.GitHub使用Elasticsearch来检索超过1300亿行代码。
    5.每天,Goldman Sachs使用它来处理5TB数据的索引,还有很多投行使用它来分析股票市场的变动。

    2、相关面试题

    1、solr如何实现搜索的?

    倒排索引,先抽取文档中词,并建立词与文档id的映射关系,然后查询的时候会根据词去查询文档id,并查询出文档

    2、Solr过滤器

    Solr的过滤器对接收到的标记流(TokenStream )做额外的处理

    过滤查询,在查询时设置

    3、Solr原理

    Solr是基于Lucene开发的全文检索服务器,而Lucene就是一套实现了全文检索的api,其本质就是一个全文检索的过程。全文检索就是把原始文档根据一定的规则拆分成若干个关键词,然后根据关键词创建索引,当查询时先查询索引找到对应的关键词,并根据关键词找到对应的文档,也就是查询结果,最终把查询结果展示给用户的过程

    4、Solr基于什么

    基于lucene搜索库的一个搜索引擎框架,lucene是一个开放源码的全文检索引擎工具包

    solr怎么设置搜索结果排名靠前

    设置文档中域的boost值,值越高相关性越高,排名就靠前

    5、IK分词器原理

    本质上是词典分词,在内存中初始化一个词典,然后在分词过程中逐个读取字符,和字典中的字符相匹配,把文档中的所有词语拆分出来的过程

    6、solr的索引查询为什么比数据库要快

    Solr使用的是Lucene API实现的全文检索。全文检索本质上是查询的索引。而数据库中并不是所有的字段都建立的索引,更何况如果使用like查询时很大的可能是不使用索引,所以使用solr查询时要比查数据库快

    7、solr索引库个别数据索引丢失怎么办

    首先Solr是不会丢失个别数据的。如果索引库中缺少数据,那就向索引库中添加

    8、Lucene索引优化

    直接使用Lucene实现全文检索已经是过时的方案,推荐使用solr。Solr已经提供了完整的全文检索解决方案

    9、多张表的数据导入solr(解决id冲突)

    在schema.xml中添加uuid,然后solrconfig那边修改update的部分,改为使用uuid生成

    10、solr如何分词,新增词和禁用词如何解决

    schema.xml文件中配置一个IK分词器,然后域指定分词器为IK

    新增词添加到词典配置文件中ext.dic,禁用词添加到禁用词典配置文件中stopword.dic,然后在schema.xml文件中配置禁用词典:

    11、solr多条件组合查询

    创建多个查询对象,指定他们的组合关系,Occur.MUST(必须满足and),Occur.SHOULD(应该满足or),Occur.MUST_NOT(必须不满足not)

    elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段。elasticsearch 的倒排索引是什么。

    ElasticSearch(简称ES)是一个分布式、Restful的搜索及分析服务器,设计用于分布式计算;能够达到实时搜索,稳定,可靠,快速。和Apache Solr一样,它也是基于Lucence的索引服务器,而ElasticSearch对比Solr的优点在于:

    轻量级:安装启动方便,下载文件之后一条命令就可以启动。

    Schema free:可以向服务器提交任意结构的JSON对象,Solr中使用schema.xml指定了索引结构。

    多索引文件支持:使用不同的index参数就能创建另一个索引文件,Solr中需要另行配置。

    12、分布式:Solr Cloud的配置比较复杂。

    倒排索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。

    13、elasticsearch 索引数据多了怎么办,如何调优,部署

    1. 使用bulk API

    初次索引的时候,把 replica 设置为 0

    增大 threadpool.index.queue_size

    增大 indices.memory.index_buffer_size

    增大 index.translog.flush_threshold_ops

    增大 index.translog.sync_interval

    增大 index.engine.robin.refresh_interval
    http://www.jianshu.com/p/5eeeeb4375d4

    14、lucence 内部结构是什么

    索引(Index): 在Lucene中一个索引是放在一个文件夹中的。 如上图,同一文件夹中的所有的文件构成一个Lucene索引。

    段(Segment): 一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。

    segments.gen和segments_X是段的元数据文件,也即它们保存了段的属性信息。

    文档(Document): 文档是我们建索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含多篇文档。

    新添加的文档是单独保存在一个新生成的段中,随着段的合并,不同的文档合并到同一个段中。

    域(Field):
    一篇文档包含不同类型的信息,可以分开索引,比如标题,时间,正文,作者等,都可以保存在不同的域里。 不同域的索引方式可以不同,在真正解析域的存储的时候,我们会详细解读。

    词(Term):
    词是索引的最小单位,是经过词法分析和语言处理后的字符串。

    15、solr和lucene的区别
    Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr: Solr是Lucene面向企业搜索应用的扩展

    Lucene: 是一个索引与搜索类库,而不是完整的程序。

    Solr:是一个高性能,采用Java5开发,基于Lucene的一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。

    展开全文
  • 一、 Solr1. 什么是全文检索?全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的...

    一、 Solr

    1. 什么是全文检索?

    全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

    2. 简单介绍一下什么是solr?

    Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr的特性包括:

    3. • 高级的全文搜索功能

    专为高通量的网络流量进行的优化

    基于开放接口(XML和HTTP)的标准

    综合的HTML管理界面

    可伸缩性-能够有效地复制到另外一个Solr搜索服务器

    使用XML配置达到灵活性和适配性

    可扩展的插件体系

    Lucene与solr的关系是什么?

    Solr与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括 Solr: Solr是Lucene面向企业搜索应用的扩展

    4. Solr的核心配置文件是哪个?简单列举里面有哪些内容,代表什么意思?

    域 field 当中也type 域的类型 index是否参与检索 ,store是否返回

    Copy 域 name拷贝域的名字 desc目标域的名字

    在检索的时候指定copy域 他会去copy域当中的两个域去检索,方便检索

    5. 说一说solr的索引机制

    全量索引和定时索引

    6. 常用的中文分词器有哪些?

    7. 为什么需要solr集群?solr集群如何搭建?

    商品检索功能,很多用户都会访问,有一定的并发量。需要大规模分布式索引和检索能力。这个时候就需要solr集群。使用zookeeper作为solr集群的配置信息中心。

    展开全文
  • solr面试题 Solr使用不同的缓存来防止请求期间过多的IO访问和计算。 如果索引不是很频繁发生,则可以通过使用这些缓存来获得巨大的性能提升。 根据索引数据的结构和缓存的大小,它们可能会变得很大,并占用堆内存的...
    solr面试题

    solr面试题

    Solr使用不同的缓存来防止请求期间过多的IO访问和计算。 如果索引不是很频繁发生,则可以通过使用这些缓存来获得巨大的性能提升。 根据索引数据的结构和缓存的大小,它们可能会变得很大,并占用堆内存的很大一部分。 在本文中,我想展示如何使用Eclipse Memory Analyzer来查看缓存实际在内存中使用了多少空间。

    配置缓存

    可以在query部分的solrconfig.xml中配置所有Solr缓存。 您会发现如下定义:

    <filterCache class="solr.FastLRUCache"
      size="8000"
      initialSize="512"
      autowarmCount="0"/>

    这是配置为使用FastLRUCache的筛选器缓存的FastLRUCache ,最大大小为8000个项目,并且没有自动预热。 Solr附带两种常用的缓存实现,即FastLRUCacheFastLRUCache ,它们使用ConcurrentHashMapLRUCache来同步调用。 某些缓存仍配置为使用LRUCache但在一些读取繁重的项目上,我也将其更改为FastLRUCache也取得了不错的效果。

    另外,从Solr 3.6开始,还有LFUCache 我从未使用过它,它仍然标记为实验性的,随时可能更改。

    Solr带有以下缓存:

    过滤缓存

    缓存过滤器查询的位集。 如果要重新使用过滤器,这可能是非常有效的缓存。

    QueryResultCache

    存储用于查询的文档ID的有序列表。

    文档缓存

    缓存Lucene文档的存储字段。 如果字段很大或很多,则此缓存可能会变得很大。

    FieldValueCache

    主要用于构面的缓存。

    另外,您还将看到对FieldCache的引用,该引用不是Solr管理的缓存,无法配置。

    在默认配置中,Solr每个高速缓存仅高速缓存512个项目,这通常可能太小。 您可以在核心的Plugin / Stats / Caches部分的S​​olr的管理视图中查看缓存的使用情况。 这将告诉您命中率以及缓存的逐出。

    管理员

    这些统计信息是调整缓存的一个很好的起点,但是您应该意识到,如果将大小设置得太大,则会看到一些不必要的GC活动。 这就是为什么查看内存中缓存的实际大小而不是仅查看项目数可能有用的原因。

    Eclipse垫

    Eclipse MAT是查看内存中的堆并查看哪些对象占用空间的好工具。 顾名思义,它基于Eclipse,可以作为独立工具下载,也可以通过更新站点获得,以集成到现有实例中。

    可以使用该工具直接获取堆转储,但您也可以打开现有的转储。 如果您在缓存中保留许多项目,则打开后,它将自动计算可能已经包含某些缓存对象的最大对象的图表。

    最大的对象

    使用饼形图下方的链接,您还可以打开更多的自动报告,例如,“最大消费者”,这是有关大型对象的更详细页面。

    顶级消费者

    即使您确实在此处看到了某些缓存类,也无法真正看到消耗内存的是哪个缓存。 使用报告顶部的“查询浏览器”菜单,您也可以直接列出类的实例,无论它们有多大。

    菜单

    我们选择带有传出引用的列表对象,然后输入FastLRUCache org.apache.solr.search.FastLRUCache的类名称。 对于默认配置,您将看到两个实例。 单击其中一个实例时,您可以在左下方窗口中看到缓存的名称,在本例中为过滤器缓存。

    FastLRUCache

    堆大小有两个可用的数字: 浅大小和保留大小 当查看缓存时,我们会对保留的大小感兴趣,因为这是实例被垃圾回收时可用的大小,即仅由缓存使用的缓存的大小。 在我们的情况下,这大约为700kB,但可能会增长很多。

    您也可以对org.apache.solr.search.LRUCache做同样的检查,以查看缓存的实际大小。

    结论

    缓存可以比这里的示例更大。 Eclipse Memory Analyzer已经帮助我很多了,看看堆太大的问题是否存在。

    翻译自: https://www.javacodegeeks.com/2014/05/see-your-solr-cache-sizes-eclipse-memory-analyzer.html

    solr面试题

    展开全文
  • solr面试题相关

    千次阅读 2019-07-25 21:07:56
    solr内置查询参数有哪些? q – 查询字符串,必须的。Solr 中使用的基本查询。 fq – (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的, sort – 排序,格式:sort=<field name>+<...
    1. solr内置查询参数有哪些?
    • q – 查询字符串,必须的。Solr 中使用的基本查询
    • fq – (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,
    • sort – 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。
    • start – 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。
    • rows – 指定返回结果最多有多少条记录,配合start来实现分页。
    • wt – (writer type)指定输出格式,可以有 xml, json, php, phps, 后面 solr 1.3增加的,要用通知我们,因 为默认没有打开。
    •  
    • fl- field作为逗号分隔的列表指定文档结果中应返回的 Field 集。默认为 “*”,指所有的字段。“score” 指还应 返回记分。
    • df – 默认的查询字段(field),一般默认指定
    • qt – (query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。
    • hl - 设置字段高亮显示(内置还有一些参数)
    1. solr逻辑运算符有哪些?

    布尔操作符AND、&&

    布尔操作符OR、||

    布尔操作符NOT、!

    1. solr的竞品你知道有什么?
      1. https://blog.csdn.net/lj6052317/article/details/70241212
    1. ElasticSearch : 基于Lucene的搜索服务器,基于RESTful web接,Elasticsearch是用Java开发的,开源的,多用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
    2. Solandra它就是结合了 Solr 与 Cassandra(Cassandra是一套开源分布式NoSQL数据库系统) 的实时搜索引擎程序,支持Solr的大多数默认特性 (search,faceting,highlights)数据复制,分片,缓存及压缩这些都由Cassandra来进行Multi-master(任意结点都可供读写)实时性高
    3. 描述一下solr在整个应用的架构中所处的位置?

    1.Solr作为一个独立的全文检索服务器运行。在内部使用JAVA开发的Lucene完成全文本索引和查询,提供RESTful API完成对大多数编程语言的支持。灵活的外部配置使得可以不用编写任何的JAVA代码就能完成工作,同时还提供了插件式的架构来支持更为高级的用户定制。

    2.Solr运行在其他的服务器应用程序之外单独对外提供服务设备管理系统来说,我们要提供一些用户界面:例如,可以发起添加设备的界面,可以查看设备的界面,可以发起领用设备的界面,作为设备管理员,可能还需要对不正确的设备进行调整。无论添加领用、查看设备等哪个功能,都是围绕着设备展开的。这些信息会同时存在于平台系统的数据库中和Solr系统中,只不过可能会因为存放在不同系统中所要达到的目的和用处不一样,信息的格式和完整度也会有差异。

      1. Solr的查询基于RESTful,也就是说,一个查询的本质就是一个简单的HTTP请求URL和一个结构化的响应文档。响应文档的结构主要包含:XML、JSON、CSV,还有其他格式 。这也意味着,大量的客户应用程序可以使用Solr,比如WEB应用、富客户端应用和移动设备。任何支持HTTP协议的平台都能和Solr进行交互。
    1. solr是解决什么问题的?

    严格来说,lucene负责数据存储,而solr只是一个引擎提供搜索和插入而已,跟数据库的解释器一样,有什么好处呢,比如一个数据库有一个字段存了1000个字,你想从这些字里面搜一个词的时候,普通的数据库只会让你使用like去查询,他会遍历每个字去模糊匹配,效率很低,而且有些是无法查询的,当然除了像一些特殊的数据库带有分词,比如postgresql,那lucene做的事情就是分词,然后去匹配分词的词中是否有你想搜的词就好了,当然了,为了提高这种检索效率和内存节省底层做了很复杂的事情,可以这么简单的认为,全文搜索这件事情上数据库是无法满足的

    1. 解释一下什么是solrcore?
      1. solrcore就是solr中的一个实例,也就是索引库,一个solr可以有多个solr实例,多个solr实例之间互不干扰
    2. 解释一下什么是solrhome?

       Solrhome是solr的根目录,也是存放索引库的位置,一个solrhome中可以有多个solrcore。

    1. 解释一下什么是collection?
      1. 单机版的solr,collection 就是solrcore 是solr的一个实例(索引库)
      2. SolrCloud中: collection是逻辑结构上solrcore 的集合
      3. 在SolrCloud集群中逻辑意义上的完整的索引。它常常被划分为一个或多个Shard,它们使用相同的Config Set。如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用的和Shard相关参数。
    2. 如何启动solr实例?

     

    1. 如何启动solr集群?

     

    1. 如何在指定端口上启动solr实例?
    2. solr集群必须依赖zookeeper吗?
      1. 不是。但是使用zookeeper是最方便
    3. 什么是高亮处理?

    Scheam.xml (配置field fieldType IK分词器)

      1. 其实就是多了highlightin高亮的字段,并没有改变原来返回的字段内容。
      2. 如果要对某field做高亮显示,必须对该field设置stored=true *****
      3. Solrj 有三种高亮处理的方法Standard Highlighter(最常用),根据查询的docIdSet,获取Documents,并获取当前document的需要高亮的field的value,根据query的term和该field的value做匹配算法
    1. solr中有哪些重要的配置文件?
      1. solr.xml (配置集群时候使用,配置集群信息例:SolrCloud的ip 端口,连接超时时间等等)
      2. SolrConfig.xml (配置<lib> 标签的内容(solr实例需要的jar),请求的处理)
      3. Schema.xml(配置filed,配置filedType,配置分析器)
    2. 用哪一个标签来定义solr的一个数据类型?

    <fieldType>

    1. 用哪一个标签来定义solr的一个字段?

    <field>

    1. solr的字段有哪些分类?

    常用的:

    StringField  不分词 索引 存储自定 常用于id,一些唯一的列

    LongField    分词   索引 存储自定  常用于数字列

    StoredField  不分词  不索引 存储      常用于图片,音频等 只需要展示的列

    TextField    分词    索引   存储自定  适用于任何类型(solr 配置分词器的属性类型,一定是此 类型)

    1. fq的作用是什么?

    过滤条件 找第一题

    1. fl的作用是什么?

    找第一题

    1. 如何设定默认查询字段?

    找第一题

    1. 如何设定高亮?

    找第一题

    1. 做增量索引的时间依据是从哪里获取?(全量索引)

    再索引库中collcation/conf/dataimport.properties中的

    last_index_time 以这个时间为时间依据

    1. 什么是分词?

    Solr再做索引流程时,需要根据solr的配置文件(scheam.xml)中所定义的分词器的类型进行分词,将文档分成一个一个的term

    1. 如何设置停用词?

    在solr服务的WEB-INF/classes中的 stopword.dic文件中设置

    1. 停用词的作用?

    作用:停用词将不会被分词,节省存储空间,提高查询效率

    1. 如何做中文分词?

    常用IK分词器做中文分词,具体流程:

    先分词,后过滤

    过滤:

    1. 去标点
    2. 大写转小写
    3. 去停留词

     

    1. 什么是solrCloud?

    SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。

     SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。

    它有几个特色功能:

    1)集中式的配置信息

    2)自动容错

    3)近实时搜索

    4)查询时自动负载均衡

     

    1. 如何创建solrCloud?

    第一步: 搭建zookeeper集群

    第二部: 搭建tomcat集群

    第三部:配置每个每个solr实例的solrhome

    第四部:将solr的配文件上传到zookeeper统一管理

    第五步:配置每个solr服务的端口及ip地址

    第六步:每一台solr和zookeeper关联

    第七部:完成配置启动服务

     

    1. 在solrCloud模式下,配置文件保存在哪里?

    保存在zookeeper的服务中,可以通过zookeeper的客户端链接查看

    1. 描述solrCloud的逻辑结构?

    索引集合包括两个Shard(shard1和shard2),shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。

    用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。

    1. 描述solrCloud的物理结构?

    三个Solr实例( 每个实例包括两个Core),组成一个SolrCloud。

    1. 什么是shard的拷贝?

    Shard  replica(副本),一个shard是由多个副本构成的,注意一个Shard中的replica 包含的内容逻辑上应该是一样的,Shard的数据只是其中一份Replica,不是这些副本的组合。

    1. 一个shard可以有多少个拷贝?

    根据实际的业务需求,最多不超过10个。

    1. 某一个shard的拷贝中是不是一定有一个拷贝为leader?

    不一定,每个shard中不一定都有拷贝的leader,但是如果请求被分配到当前没有leader的shard中,该请求会默认去同级的shard中寻找leader。

    1. leader的作用什么?

    真正处理请求事务,当某个leader挂掉后,其他的Replica 会从新选举新的leader

    1. 用哪一个solrj类来管理单机版的solr连接?

    HttpSolrServer

    SolrServer server = new HttpSolrServer("http://localhost:8080/solr");

    1. 用哪一个solrj类来管理集群版的solr连接?

    CloudSolrServer

    CloudSolrServer server = new CloudSolrServer(zkHost);

    1. 当使用solrj连接solrCloud的时候我们只需要知道zookeeper地址即可对吗?

    不对,还需获取collection的name

    1. 什么是自动提交?如何配置?

    硬提交是关于持久化的,软提交是关于可见性的

    有两种自动提交方式:1.自动硬提交,2.自动软提交

    硬提交:

    一般提交又或者叫硬提交(hard commit), 使用这种提交会把文档立即持久化到磁盘,并可以让你能立马查询到它,因为它会开启一个新的searcher,但是它缺点很明显,就是很耗性能,并会阻塞到提交任务完成,使用它是非常昂贵的操作。
    在提交的文档的url里使用commit=true即可使用。

    软提交:

    软提交,这种提交不会立即把数据写到磁盘,但它可以使你能立即查询到它,就是所谓的支持near real-time (NRT) searching近实时查询,而且这样的操作不昂贵。

    在solrConfig.xml中配置如下:

    <!-- 自动硬提交 -->

    <autoCommit> 

    <maxTime>${solr.autoCommit.maxTime:30000}</maxTime> 

    <openSearcher>false</openSearcher> 

    </autoCommit> 

    <!-- 自动软提交 -->

    <autoSoftCommit> 

    <maxTime>${solr.autoSoftCommit.maxTime:5000}</maxTime> 

    </autoSoftCommit>

    1. 什么是软提交?如何配置?

    38题

    1. Solrclient.commit()的提交方式是软提交吗?

    不是,是硬提交。

    1. 软提交的好处是什么?

    这种提交不会立即把数据写到磁盘,但它可以使你能立即查询到它提高读写效率

    1. 自动提交可能带来索引的丢失,solr是如何解决这个问题的?

      在solrConfig.xml中配置如下属性:

       maxDocs:当内存索引数量达到指定值的时候,将内存的索引DUMP到硬盘中,并通知searcher类加载新的索引

        maxTime:每隔指定的时间段,自动的COMMIT内存中的索引数据,并通知Searcher类加载新的索引。

    1. 谈谈lucene和solr的关系?

    Lucene是全文检索引擎工具包,不能够独立对外提供搜索和索引服务。

    Solr是一个全文检索服务器,可以单独对外提供全文检索服务,并且可扩展、可配置的,提供比lucene更多的查询语句,对lucene进行了性能的优化。

    Solr和lucene一样,不提供视图的渲染。

    1. 描述一下项目中你是如何使用solr的?

    首先,在linux系统上搭建solr服务,配置ik分词器,去schema.xml配置文件中定义field域(每种字段的域),需要高亮显示的字段在schema.xml中指定的field中的属性store设置为true比如:设备的名称,设备描述(凡是可以作为查询条件的均可高亮)等等,当然还可以设值高亮的属性

    展开全文
  • Solr专栏中,更新完项目实战课程,结合常用技能点和面试高频汇总下这方面的知识。 Solr专栏是一个专为初级程序员不职场打造的项目实战专栏,利用项目实战经验,突破面试获得高薪 很多学子刚毕业步入社会,大...
  • Solr调研总结开发类型全文检索相关开发Solr版本4.2文件内容本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示、拼写...
  • 昨天把博客上线,今天早上起来发现昨天晚上Solr服务器出错了,到今天下午才有时间来解决,一个Tomcat放博客项目,另一个Tomcat放Solr服务器,配置了多个Solr Core,第一次重启Solr服务器所在的Tomcat,报错信息如下...
  • 后期补充:为什么要用solr服务,为什么要用luncence?问题提出:当我们访问购物网站的时候,我们可以根据我们随意所想的内容输入关键字就可以查询出相关的内容,这是怎么做到呢?这些随意的数据不可能是根据数据库的...
  • 本课程共分26节,内容包括solr概述,文档的导入删除和修改,修改大启动时间和默认时区,主要配置文件详解,solrcore详解与使用,mysql数据导入索引库,定时任务,中文分词,solrcloud创建和使用,路由规则,负载均衡...
  • Java面试题2.0--solr

    2020-06-30 17:11:49
    欢迎关注《Java面试题2.0》合集发布页,持续更新中! 概念: Solr是目前非常受欢迎的基于Apache开源组织下Lucene开发的一个开源高性能的企业级搜索平台。Solr具有高度可靠性、可扩展性、可容错性的特点,...
  • Solr构建分布式搜索+面试题讲解 从事开发工作10余年,见证了各个阶段技术...
  • Lucene&Solr&ElasticSearch-面试题

    千次阅读 2018-10-20 17:18:54
    1、Lucene和Solr和Elasticsearch的区别 Lucene Lucene是apache下的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引...
  • Elasticsearch 和 solr 的区别1.背景2. 区别 1.背景 二者都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】 开发语言:...
  • @、Lucene和Solr和Elasticsearch的区别 @、Elasticsearch的优缺点 @、Solr的优缺点: @、Elasticsearch 与 Solr 的比较 @、solr如何实现搜索的? @、Solr原理 @、Solr基于什么 @、solr怎么设置搜索结果排名靠...
  • 当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。 在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。 Solr利用zookeeper进行分布式管理
  • 1、Lucene和Solr和Elasticsearch的区别LuceneLucene是apache下的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而...
  • es和solr都是基于lucence框架的分词技术的倒排索引进行实现的高性能的搜索引擎框架。 Solr 2004年诞生(当时是Solar)。 ElasticSearch 2010年诞生。 ES更加新。 当单纯的对已有的数据进行检索的话,Solr的性能优于...
  • 1、Lucene和Solr和Elasticsearch的区别 Lucene Lucene是apache下的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引...
  • ES 或 Solr 分词器的相关面试题

    千次阅读 2019-04-23 16:11:53
    ②创建集合(collection/core) ③配置中文分词 ④在图形界面通过articles进行测试是否支持中文分词 ⑤定义字段类型 ⑥建立索引并查询 5、solr怎么设置搜索结果排名靠前(得分)? 可以设置文档中域的boost值,...
  • 本课程共分26节,内容包括solr概述,文档的导入删除和修改,修改大启动时间和默认时区,主要配置文件详解,solrcore详解与使用,mysql数据导入索引库,定时任务,中文分词,solrcloud创建和使用,路由规则,负载均衡...
  • Java面试题--搜索(solr&elasticsearch)

    千次阅读 2019-04-07 12:24:29
    Elasticsearch的优缺点: 优点: 1.Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”...3.处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。 4.Elasticsearch 采用 Gat...
  • 1、Lucene和Solr和Elasticsearch的区别LuceneLucene是apache下的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎...
  • 全文搜索 数据类型: 结构化数据 - 具有固定格式或有线长度的数据,可以用二维表结构来逻辑表达...Solr是一个开源的基于Lucene的Java搜索引擎服务器 主流全文搜索引擎 Solr ElasticSearch OpenSearch Sphinx ...
  • 尚硅谷_最新面试题

    2018-12-22 16:38:49
    尚硅谷18年1024程序员节出的 , 01...redis 在项目中的使用场景.avi 18_尚硅谷_项目面试题_es与solr的区别.avi 19_尚硅谷_项目面试题_单点登录.avi 20_尚硅谷_项目面试题_购物车.avi 21_尚硅谷_项目面试题_消息队列.avi
  • 基于这个特性,在创建子节点的时候,可以 尚学堂 Java 面试题大全及参考答案 设置这个属性,那么在创建节点过程中,ZK 会自动为给定节点名加上一个数字后缀,作 为新的节点名。这个数字后缀的范围是整型的最大值。 ...
  • 面试题

    2018-11-15 18:09:44
    问题1:Solr---数据导入 1.solr安装,配置IK分词器,配置域(复制域,动态域) 2.使用SpringDateSolr  (1).导入坐标  (2).创建配置文件,配置solr服务器地址,及solr模板(用于对索引库的CRUD操作)  (3).创建pojo类,...
  • 面试题(20)最新蚂蚁花呗三面题目:红黑树+并发容器+CAS+Solr+分布式+大数据 面试题(21)十五道java开发常遇到的计算机网络协议高频面试题 蚂蚁花呗一面(一个小时): Java容器有哪些?哪些是同步容器,哪些是...

空空如也

空空如也

1 2 3 4
收藏数 76
精华内容 30
关键字:

solr面试题