![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lucene
文章平均质量分 83
iteye_14612
这个作者很懒,什么都没留下…
展开
-
lucene中的PackedInts源码解读-1
之前在看lucene4.x的源码的时候,老是遇见packedInts这个类,当时没有看懂,所以这个周一没事做又看了一下,茅塞顿开,看懂了,记个笔记,装一下B。如果读者认为我的博客中含有错误,请联系我,我的qq是1308567317,以免误人子弟。顺便说一下,我这里看的是lucene6.6.0的代码。之前阿帅写个关于博客是写PackedInts,不过他仅仅写了PackedInts的思路和...原创 2018-07-27 19:45:27 · 861 阅读 · 0 评论 -
solr、lucene的效率分析的一个文章
链接:https://wiki.apache.org/solr/SolrPerformanceProblems?主要讲了:gc、commit、内存大小(包括java、os),cache(涉及到warm)对性能的影响,讲的很好。原创 2017-03-24 17:18:07 · 191 阅读 · 0 评论 -
实现得分的PrefixQuery
(先声明一下,我使用的lucene的版本是lucene4.7.2)在lucene中,有一种类型的query叫做MultiTermQuery,故名思议,他是要涉及到很多个term的query,比如我们常用的WildcardQuery、FuzzyQuery、PrefixQuery、TermRangeQuery、NumericRangeQuery等,他们都是需要按照一个或者多个term按照一定的...原创 2017-03-16 19:38:16 · 442 阅读 · 0 评论 -
lucene3.0.3中的数字索引以及数字范围查询
我看了3个下午,加上一个上午终于看懂了lucene对于数字的索引和对于数字范围的检索,主要的时间都是花在了NumericRangeQuery上,尽管一次一次的失败但是我并没有放弃的打算,研究与探索本来就是我的一大兴趣,最后的喜悦要比之前所有的痛苦都要来的爽!谢谢笔记,方便可能正在迷茫的你。备注:如果你对lucene的索引格式不熟悉尤其刚接触lucene的话,请绕行,这片笔记只适合对...原创 2017-01-09 15:40:28 · 537 阅读 · 0 评论 -
lucene3.0.3中的SpanNearQuery(一)
SpanNearQuery和PhraseQuery是差不多的意思,都是表示多个term必须全部存在且距离满足一定的条件的query,但是SpanTermQuery的用法更多,比如他有一个inorder的参数,可以控制多个term出现的位置是不是要符合指定的顺序(phraseQuery就是可以不按照出现的顺序的)构建一个SpanNearQuery需要三个参数,一个是多个SpanQuery,一...原创 2016-12-30 18:19:48 · 744 阅读 · 0 评论 -
lucene3.0.3中的SpanFirstQuery
SpanFirstQuery是一个很简单的SpanQuery,在根据spans进行召回doc的时候,他会判断当前出现的位置是否满足一定的条件——出现的是不是在指定的end之前,如果是的话说明当前的位置是符合要求的,否则会继续读取下一个位置。我们看一下他的getSpans方法@Overridepublic Spans getSpans(final IndexReader reader) ...原创 2016-12-30 11:15:14 · 143 阅读 · 0 评论 -
lucene3.0.3中的PayloadTermQuery、PayloadFunction
上一篇写了SpanTermQuery,他没有任何意思,但是他有个子类,叫做PayloadTermQuery,这个类倒是可以实现一些功能。他也是根据term进行召回,但是对于得分的计算可以加入payload的信息,这样可以使得某个term和某个doc产生单独的关系,比如我们在电商搜索中,对于某个商品想做推广,使得他在搜索a词的时候得分特别大,但是其他的搜索的得分不会变大,显然使用boost是不正...原创 2016-12-30 10:34:48 · 213 阅读 · 0 评论 -
lucene3.0.3中的Spanquery和Spans介绍
SpanQuery就是用来查询不仅仅是含有term,并且存在的各个term的位置符合一定条件的doc,从源码上讲他最大的改变就是有了getSpans(IndexReader reader)方法,该方法返回的是Spans,在SpanQuery中使用Spans这个类来召回doc(在普通的termQuery中是使用termDocs进行召回),我们先看看Spans这个类。 在...原创 2016-12-29 17:39:37 · 502 阅读 · 0 评论 -
lucene3.0.3中的CustomerScoreQuery
我原本以为我已经把lucene3.0.3看的很详细了,结果发现漏了一个很重要的query——CustomerScoreQuery,从名字上看表示用户自定义得分的query,我表示很好奇,因为我花了好大力气才明白了lucene的得分公式,貌似这里竟然可以自己写得分公式了,于是我抱着极大的好奇心看了他的源码,记录在此,方便大家。 CustomerScoreQuery的原理是...原创 2016-12-27 13:54:42 · 139 阅读 · 0 评论 -
lucene3.0.3中的FieldCache
FieldCache是lucene中的一个隐藏的很深的东西,在api中不可见,我也是在看排序的源码中才看到这个类的,今天我又看了个CustomScoreQuery,它里面也是用了FieldCache,所以我觉得这个类还是比较重要的,有必有把这个类记录一下。(补充:我现在看的版本是3.0.3,在lucene4.x及以后的版本中对于sort、facet已经使用docValue了,不在使...原创 2016-12-26 19:37:21 · 153 阅读 · 0 评论 -
lucene3.0.3中的DidjunctionMaxQuery
solr中的dismax我在lucene中一直没有找到对应的queryParser,但是我倒是找到了一个Query——DisjunctionMaxQuery,他的原理和disMax的原理是一样的。我仔细想了想,solr中的dismax这个queryParser的最终也是形成了一个类似的query,当然其实现可能不同,大致原理应该一样。所以我看了看lucene 3.0.3中的Dis...原创 2016-12-24 10:56:06 · 197 阅读 · 0 评论 -
lucene中的PackedInts源码解读(3)-PACKED格式
继续回到最开始的获得mutable的代码那里去public static Mutable getMutable(int valueCount, int bitsPerValue, PackedInts.Format format) { assert valueCount >= 0; switch (format) { case PACKED_SI...原创 2018-07-28 17:06:37 · 475 阅读 · 0 评论 -
lucene中的PackedInts源码解读(2)-Packed64SingleBlock
紧接上一篇文章,介绍一下Packed64SingleBlock.create方法。public static Packed64SingleBlock create(int valueCount, int bitsPerValue) { switch (bitsPerValue) {//这个方法里面会根据bitPerValue来查看使用哪一个类,我们看看前几个吧。 ...原创 2018-07-27 19:45:37 · 447 阅读 · 1 评论 -
queryParser介绍以及自定义queryParser实现搜索提示
写这篇博客第一个是为了记录在solr中自定义queryParser(顺便介绍一下solr的queryParser),第二个是在 http://suichangkele.iteye.com/blog/2363599 (自定义得分的PrefixQuery)这篇博客中也说了要在solr中使用自己的query要使用自己的queryParser,第三个是公司业务需求,需要实现更加智能的搜索提示(智能是我...原创 2017-03-25 18:32:09 · 486 阅读 · 0 评论