![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
solr
文章平均质量分 80
iteye_14612
这个作者很懒,什么都没留下…
展开
-
solr的localParam
solr中有个概念叫做localParams,翻译过来叫做局部变量,用来添加局部信息到某个变量的,比如假设我们要传递给solr查询的值为hello world,但是在查询hello的时候指定使用的queryParser或者是其他属性,则可以使用局部变量:q={!q.op=AND df=title}hello world,这个表示当查询hello world时,使用的op是AND,默认查询titl...原创 2016-03-20 09:54:27 · 189 阅读 · 0 评论 -
solr中的cache的实现原理
先说一下,我使用的版本是5.5.3 搭建过solr的人肯定对solrconf.xml不陌生,在<query></query>中有多个cache,比如filterCache、queryResultCache,documentCache。这个博客就是介绍这三个cache的意思、配置以及他们的使用。我们直接看代码,对于这三个cache的使用是在solrIndexS...原创 2017-03-25 19:42:29 · 273 阅读 · 0 评论 -
solr的cache在SolrIndexSearcher中的使用
先说一下,我使用的sorl的版本是5.5.3 上一个博客说完了solr中的cache,只是介绍了他的实现原理以及配置,并没有发现程序是如何使用他的,这个博客就是说这个,SolrIndexSearcher中对cache的使用。先说一下SolrIndexSearcher,这个就是对lucene的indexSearcher的封装,然后再查询的时候先从缓存中查,如果没有再从lucene中查找,...原创 2017-03-25 20:47:46 · 243 阅读 · 0 评论 -
solr的warm
先说明一下,我使用的是solr5.5.3 之前在一篇博客中FastLRUCache中有个重要的方法是warm,当时没有说什么意思,这篇博客就是介绍这个。 warm的意思就是热身,即当一个IndexSearcher因为提交要重新生成一个IndexSearcher的时候,要对新生成的searcher进行warm,我们看一下SolrCore这个类的getSearcher方法,在这个方...原创 2017-03-25 21:22:24 · 154 阅读 · 0 评论 -
solr中的SolrEventListener以及cache统计信息的获得
先声明一下,我的solr的版本是5.5.3 上一篇博客中说了当更新SolrIndexSearcher的时候并不是仅仅调用预热,还有其他的操作,那么都是有什么呢,看一下SolrCore的getSearcher方法(参数最多的一个),如果if (newSearcher != currSearcher) ,即索引发生了变化(无论是commit还是softCommit都算是变化),不仅仅是调用...原创 2017-03-26 17:11:16 · 223 阅读 · 0 评论 -
solr中与SolrIndexSearcher相关的其他配置
前面的几篇博客已经介绍了solrIndexSearcher的cache,warm,listener,其实还有其他的很多的配置,这个博客就是将这些。先声明一下,我的solr是5.5.3.在solrCOnfig.xml中的<query></query>下的配置都是和SolrIndexSearcher相关的,上一个博客中的<listener>就是在<qu...原创 2017-03-26 17:48:35 · 343 阅读 · 0 评论 -
如何查看solr中cache的使用情况
之前在 这篇博客中 (http://suichangkele.iteye.com/blog/2365868)写到了关于solr所使用的cache的统计信息的获取,但是他只在更新SolrIndexSearcher的时候才会触发,那么如何能随时的查看cache的使用情况呢?倒着推:如果要查找缓存的使用,必须获得SolrCore,获得SolrCore太简单了,任何一个Request都可以获得Sorl...原创 2017-03-27 17:32:16 · 378 阅读 · 0 评论 -
solr中的同义词配置以及关键源码解读
由于工作中需要做同义词,今天看了看solr的实现以及源码,记个笔记。我看的solr的版本是5.5.3.在solr的schema.xml中(5.x的版本是managed-schema文件)已经有实例了,截图如下: <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"&g...原创 2017-03-28 18:31:07 · 427 阅读 · 0 评论 -
solr中的dismax解析器
之前一直用dismax,但是一直没有看看他到底是怎么实现的,今天终于看了一遍源码,记个笔记,方便以后查阅。当我们使用defType=dismax的时候就会使用到DisMaxQParser这个类,他是一个QParser,用于根据用户的输入解析为一个Query类的实例。我们看看他的解析方法: @Override public Query parse() throws SyntaxE...原创 2017-04-22 16:07:57 · 477 阅读 · 0 评论 -
queryParser介绍以及自定义queryParser实现搜索提示
写这篇博客第一个是为了记录在solr中自定义queryParser(顺便介绍一下solr的queryParser),第二个是在 http://suichangkele.iteye.com/blog/2363599 (自定义得分的PrefixQuery)这篇博客中也说了要在solr中使用自己的query要使用自己的queryParser,第三个是公司业务需求,需要实现更加智能的搜索提示(智能是我...原创 2017-03-25 18:32:09 · 486 阅读 · 0 评论 -
solr、lucene的效率分析的一个文章
链接:https://wiki.apache.org/solr/SolrPerformanceProblems?主要讲了:gc、commit、内存大小(包括java、os),cache(涉及到warm)对性能的影响,讲的很好。原创 2017-03-24 17:18:07 · 191 阅读 · 0 评论 -
solr分布式请求的判断——HttpShardHandler
在solrCloud中,我们发起的一次查询请求绝大部分是朝多个shard发起的请求,但是可能存在这么一个情况,我已经知道这次要查询的sahrd是哪一个了,那么如何只向一个shard发起请求呢?这个博客就是看看solrCloud对分布式请求的判断,代码在HttpShardHandler中,看看checkDistributed方法: /** * 判断这次请求是不是分布式的请求,根据是...原创 2017-03-17 10:13:57 · 231 阅读 · 0 评论 -
solrCloud搭建笔记
把搭建solrCloud的笔记写在这,方便我,也能方便你。我是在windows上搭建的,但是zk是linux上。我一共使用了三个solrCloud的server,共两个shard,每个server都部署在一个单独的tomcat上。我本地的host是:172.16.140.55,我的linux的host是172.16.9.2。我的假设是已经会搭建单机的solr,所以关于搭建单机的solr的步...原创 2016-12-04 16:17:08 · 114 阅读 · 0 评论 -
solrCloud搭建笔记(更好一点)
之前已经写了一篇solrCloud的搭建笔记了,最近又发现一种更好的方法,在记录一边,我使用的zk的版本是3.4.6,使用的solr的版本是5.5.3,请在apache的官网现在solr此版本的安装包,另外我使用的tomcat是8.x的版本,8之下的会报一个错。1、搭建zk环境,我的zk的url是ip:2181,为了不和其他的配置混乱,我在zk中单独建立了一个节点,来存放solr的信息,s...原创 2017-01-13 16:49:10 · 115 阅读 · 0 评论 -
solr中对于分词结果的获得即分析
在使用solr的时候,在管理页面的analysis中可以发现有对词的分析的展示,在solrj中同样提供了方法获得,记个笔记,方便以后再用的着。使用solrj获得分词结果要使用FieldAnalysisRequest类。 solrj提供的接口的逻辑和管理页面的逻辑一样,先是区分建立索引和查询两种情况(比如ik的使用时就是在建立索引的时候不适用智能分词,而在查询时启用智能分词)...原创 2017-03-01 20:29:33 · 798 阅读 · 0 评论 -
solrCloud中CompsiteId路由策略的collection的操作分析
solrCloud有多个shard,一个shard有一个或者多个replica,那么再solrj发起添加documnet(这里称作update请求)或者是查询(这里叫做query请求)的时候,是如何向最终的各个solr的不同的shard的replica发送的请求呢?我看了看solrj中的CloudSolrServer的处理请求的源码以及solr服务端的部分源码,终于弄懂了,几个笔...原创 2017-03-06 13:39:55 · 355 阅读 · 0 评论 -
solr中对于关键字置顶(竞价排名)、拉黑的源码实现已经实例讲解(一)
工作中用到了关键词置顶、拉黑的操作,自己毫无办法,考虑了很久打算用payload,但是又来在一个研究lucene源码的群中某个小伙伴给我提示说solr中已经为我们实现了这个功能,顿时大喜,马上百度了一下,然后内心很激动,solr真的太好用了,都为我们考虑到了。不过这远远不够,还有更多的事情需要做,不明白他的实现原理,只能猜,一遍一遍的试错,成本太高,所以还是拿来源码看吧。(对于没有对so...原创 2017-03-10 12:43:22 · 698 阅读 · 0 评论 -
solr中对于关键字置顶(竞价排名)、拉黑的源码实现已经实例讲解(二)
继续看他的源码,在上一篇博客中还有几个方法没有看,第一个是getElevationMap,如果在请求中没有指定elevateIds或者没有指定excludeIds的话,则调用这个方法 /** get the elevation map from the data dir <br/> 从data中读取配置文件。 */ Map<String,ElevationOb...原创 2017-03-10 13:42:05 · 344 阅读 · 0 评论 -
solrCloud中的分布式请求响应超时解决方案
之前一篇博客中写道solrCloud对查询的请求是在服务端进行的组装,是对所有的shard的所有的replica进行的轮训的。这两天看了下在服务端solr是如何进行操作的,这里涉及到的代码超级多,我就只贴一部分,用来说明大意即可。 在将查询请求发往到某个replica之后,先根据path找到某个requestHandler(我们这里用select举例),然后再用这个reque...原创 2017-03-14 17:41:43 · 1534 阅读 · 0 评论 -
solrCloud中的路由策略:DocRouter、CompositeIdRouter、ImplicitDocRouter
sorlCloud是分片的,那么如何决定一个document应该到哪一个分片呢?负责解决这个问题的东西就是DocRouter,翻译过来是doc路由器。在创建一个集合(collection)的时候,我们必须要给集合置顶一个docRouter,solr中默认是使用基于hash策略的docRouter(CompositeIdRouter),当然还有其他的Router,这个博客就要说这些。我们先看...原创 2017-03-15 17:13:48 · 1010 阅读 · 0 评论 -
solr中schema.xml中域的omitNorm属性
今天在测试一个solr的排序问题的时候,突然建立不了索引了,我用的分布式的solrCloud(4.7.2版本),报一个异常—— org.apache.solr.client.solrj.impl.CloudSolrServer$RouteException: ERROR: [doc=0] cannot set an index-time boost, unindexed or norms ar...原创 2017-04-23 13:13:35 · 1193 阅读 · 0 评论