700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > solr面试题相关

solr面试题相关

时间:2023-12-10 22:27:30

相关推荐

solr面试题相关

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 - 设置字段高亮显示(内置还有一些参数)solr逻辑运算符有哪些?

布尔操作符AND、&&

布尔操作符OR、||

布尔操作符NOT、!

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

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

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

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

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

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

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

解释一下什么是collection? 单机版的solr,collection 就是solrcore 是solr的一个实例(索引库)SolrCloud中: collection是逻辑结构上solrcore 的集合在SolrCloud集群中逻辑意义上的完整的索引。它常常被划分为一个或多个Shard,它们使用相同的Config Set。如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用的和Shard相关参数。如何启动solr实例?如何启动solr集群?如何在指定端口上启动solr实例?solr集群必须依赖zookeeper吗? 不是。但是使用zookeeper是最方便什么是高亮处理?

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

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

<fieldType>

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

<field>

solr的字段有哪些分类?

常用的:

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

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

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

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

fq的作用是什么?

过滤条件 找第一题

fl的作用是什么?

找第一题

如何设定默认查询字段?

找第一题

如何设定高亮?

找第一题

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

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

last_index_time 以这个时间为时间依据

什么是分词?

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

如何设置停用词?

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

停用词的作用?

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

如何做中文分词?

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

先分词,后过滤

过滤:

去标点大写转小写去停留词什么是solrCloud?

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

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

它有几个特色功能:

1)集中式的配置信息

2)自动容错

3)近实时搜索

4)查询时自动负载均衡

如何创建solrCloud?

第一步: 搭建zookeeper集群

第二部: 搭建tomcat集群

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

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

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

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

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

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

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

描述solrCloud的逻辑结构?

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

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

描述solrCloud的物理结构?

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

什么是shard的拷贝?

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

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

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

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

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

leader的作用什么?

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

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

HttpSolrServer

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

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

CloudSolrServer

CloudSolrServer server = new CloudSolrServer(zkHost);

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

不对,还需获取collection的name

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

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

有两种自动提交方式: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>

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

38题

mit()的提交方式是软提交吗?

不是,是硬提交。

软提交的好处是什么?

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

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

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

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

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

谈谈lucene和solr的关系?

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

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

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。