solr必知必问问题

Posted AKA程序王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solr必知必问问题相关的知识,希望对你有一定的参考价值。


1. solr 内置查询参数有哪些?
例如 q,fq,fl,df,hl 等都是内置的查询参数。

2. solr 逻辑运算符有哪些?
AND,OR,NOT 等。区分大小写

3. solr 的竞品你知道有什么?
ElasticSearch,了解他跟我们 solr 的区别

4. 描述一下 solr 在整个应用的架构中所处的位置?
即 solr 在整个架构中扮演的角色,在传统架构中,为了解决数据数据库进行主从、集群、redis 缓存...等技术。同理,solr 也是为了这是其一。其二,solr 适合做全文检索和分词处理。

5. solr 是解决什么问题的?
上面阐述的问题。

6. 解释一下什么是 solrcore?
solrcore 就是 solrhome 下的一个独立的索引“库”,就相当于

7. 解释一下什么是 solrhome?
solr 的数据索引和主要的配置文件所在的目录。Solrhome 下可以Solr7.2.1 默认的 solrhome 是 solr 安装目录/server/solr

8. 解释一下什么是 collection?
是 solrcloud 中的概念,它等价于单机版中的 solrcore 的概念。

9. 如何启动 solr 实例?
Solr start -p 9000

10.如何启动 solr 集群?
Solr start -c -p 7001 -z 127.0.0.1:2181

11.如何在指定端口上启动 solr 实例?


12.solr 集群必须依赖 zookeeper 吗?

是的,必须依赖。整个集群中的配置文件,只有 1 份,这一份交给了 ZK 管理。


13.什么是高亮处理?

在搜索的结果中,针对搜索的关键字做一个特殊的颜色标记。使用 hl 去设置高亮参数,

需要设置:设置高亮字段、设置高亮前缀、设置高亮后缀。如图哦所示:


14.solr 中有哪些重要的配置文件?

有 两 个 重 要 配 置 文 件 , 他 们 在 solrcore/conf 目 录 下 :solrconfig.xml 和

managed-schema 文件。


15.用哪一个标签来定义 solr 的一个数据类型?

在 manged-schema 文件中,使用 fieldType 定义数据类型。


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

同样,在 manged-schema 文件中,使用 field 定义字段。


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

Field,dynamicField,copyField


18.fq 的作用是什么?

对 q 查询的结果进行过滤。跟 q 中使用 AND 功能类似,但是 fq 查询的字段不加高亮。

例如:fq 中设置 product_name:金属,那么虽然 hl 中设置了 product_name 为高亮但

是结果也没有高亮效果。


19.fl 的作用是什么?

设置查询结果中包含哪些字段,类似 select id,name,age from student.

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

使用 df 设置默认查询字段。


21.如何设定高亮?

见上。


22.做增量索引的时间依据是从哪里获取?

只对索引进行增删改都属于增量,时间记录在 solrcore/conf/dataimport.properties


23.什么是分词?

分词就是根据语言规则进行拆分。每一种语言都可以进行分词。


24.如何设置停用词?

根据分词规则进行分词后,将分词结果中不需要的词过滤出来,被过滤的这些词就是

停用词。默认的停用词在 solrcore/conf/lang/stopword_cn.txt,注意:一个停用词

一行,另外要求改文本为 UTF-8 编码


25.停用词的作用?

上面说的,对结果进行过滤。


26.如何做中文分词?

1)将相应的 jar 包拷贝到 WEB-INF/lib 下

2)设置停用词

3)配置 managed-schema 中的 fieldType 为 zhongwen

4)将需要分词的字段类型设置为 zhongwen


27.什么是 solrCloud?

solrCloud 是 4.0 以后出的 solr 的分布式集群


28.如何创建 solrCloud?

1)准备 N 个 solr 实例,N>=2 给每个实例分配端口 7000,7001

2)准备 zookper 或者 zookeeper 集群

3)启动每个实例

Solr start -c -p 7000 -z 127.0.0.1:2181

Solr start -c -p 7001 -z 127.0.0.1:2181

4)登录集群

http://localhost:7000/solr 或者 http://localhost:7001/solr

5) 创建 collection

6) Zkcli.sh 上传配置文件到 zookeeper


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

zookeeper


30.描述 solrCloud 的逻辑结构?

solr必知必问问题

一个 solr 集群由 N(N>=2)个 solr 实例组成,一个集群下可以有多个 collection,

一个 collection 下又有 N(N>=1)个 shards,一个 shard 下可以有 N(N>=1)个

拷贝。


31.描述 solrCloud 的物理结构?

solr必知必问问题


32.什么是 shard 的拷贝?

shard 的拷贝就是该 shard 节点的数据的副本,即对于某一个 shard 来说,其下所有

的拷贝中的数据都是一致的。各个 shard 之间的数据是不一样的。


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

N 个,N>=1


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


35.leader 的作用什么?

负责写入 document,即对 document 进行增、删、改。然后将结果同步到其他拷贝

中,这样,该 shard 下所有的拷贝中的数据便一致了,保证了整个集群数据的完整性,

提高了可用性。


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

HttpSolrClient


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

CloudSolrClient

对。


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

使用 solrclient.commit()进行的提交是手动提交。自动提交就是不使用 commit()方法

显示的提交,而是通过配置的方式让 solr 服务器满足一定条件时自己提交。

solr必知必问问题


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


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


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


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

事务日志中保存着上一次提交到本次提交之间时间段内所有的写操作。该日志记录在

solrcore/data/tlog/xxxx。注意:软提交是对自动提交的一个弥补(补充),软提交

不负责提交,它只是减少了查询的最大等待时间。


44.谈谈 lucene 和 solr 的关系?

solr 是基于 lucene 的,即 solr 是建立在 lucene 技术之上的,是对 lucene 的高度封

装,可以 solr 将 luncene 做成了一个 web 服务。如果没有 solr,那么,很多的技术

都需要自己去实现了,例如自动提交、索引编辑、集群中的 shard 分片等。而 solr 只

需要通过一个连接即可进行增删改查。


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

一般新建一个工程用来进行 solr 请求的处理,例如索引的增删改查。当有业务数据的

时候,先进入 mysql 数据库,然后使用定时增量索引或者自己写代码实现数据库和 solr

索引库之间的数据同步。另外,一般将商品数据、新闻等信息放入 solr 索引库。


往期精选

     

    

                                     


以上是关于solr必知必问问题的主要内容,如果未能解决你的问题,请参考以下文章

JAVA必知必问问题-2

JAVA必知必问问题-1

牛客MySQL必知必会刷题总结

面试 - 必知必会的微服务面试题

Promise 必知必会经典题

面试题:HTTP必知必会——常见面试题总结