search
stevewongbuaa
这个作者很懒,什么都没留下…
展开
-
ES pinyin 插件 拼音搜索 原理 match_phase
背景中文搜索很多时候都要用到pinyin搜索,基本绕不开这个插件;如搜索人名之类的;介绍插件github:地址在README的最后,举的例子挺有意思;经过一系列操作之后,对刘德华建index,竟然搜liudh,刘dh,各种奇葩的搜索都能搜出来,这是为啥呢?让我们来仔细分析一下。如官网的配置配置analyzerPUT /medcl3/{ "settings" : { "analysis" : { "analyzer" : {原创 2020-06-18 15:35:58 · 1974 阅读 · 0 评论 -
b-k-d树 原理 图文解析
背景前文介绍了 k-d树 和 k-d-b树 今天再来这个b-k-d树已经几乎没啥可以参考的资料了只能硬啃两篇文章了一个是:medium一个是发明者的论文挺好的,人还是要耐着性子读一些难啃的东西开始介绍关键点这个b-k-d树是基于k-d-b树再做的改进,整体的结构是个森林。。(多个k-d-b树)前文介绍,k-d-b树在做静态查询的时候效果特别好,但是动态插入就不好了。为了解决这种问题,作者研究了这种炸天的算法,用一个森林来做。。仔仔细细地看插入算法:在内存中有一个完全二叉树作为bu原创 2020-06-11 18:29:30 · 3046 阅读 · 0 评论 -
k-d-b树 对 k-d树的改进 原理 图文解析
背景上文讲到k-d树下面来看k-d-b树参考这篇文章:介绍类比二叉搜索树,树会太高,对磁盘io不友好k-d树就更高了,树是真的高,那么我们能不能引入b+树的思想来解决这个问题呢?k-d-b树就是这么搞的。首先我们想一下b+树怎么解决这个问题的。b+树,不再是二叉树,而是多叉树。引入了内部节点,内部节点不存储实际数据,只是一些索引节点。每个内部节点由最小值和最大值定义。与k-d树不一样,k-d树每一层级切分的维度是反复横跳的(第一层x轴,第二层y轴,第三层x轴…)继续上图,参考维基百科原创 2020-06-11 18:14:17 · 1073 阅读 · 0 评论 -
k-d树 原理 图文解析
背景看到了Lucene -》 Bkd树 -》 k-d树what the f*ck are all of these?本文就先从k-d树介绍吧参考维基百科首先这是干嘛的?用于多维度搜索的。例如在二维平面搜一个点,在三维空间搜一个点,在多维空间搜一个点。。。。上个图最好理解了假设我们要搜索的平面就是上面这个图的正方形平面。那么我们建立的k-d树就是下面这个图这样。树的每一层级划分一个平面,循环地划分。在上面这个例子里,第一级是按照X维度划分平面,第二级按照Y维度划分平面,第三级又按照X维原创 2020-06-11 15:54:08 · 1524 阅读 · 0 评论 -
Lucene 如何做多个拉链的交集
背景网上的文章各式各样,还不如看看源码参考比较靠谱的一个博主他的一本“书“ 写的比较明白,可供参考:看上面这个博客基本可以看懂原理。建议大家先读一读,配图也比较丰富,比较好理解。但是这个博客已经比较老了,不禁让人怀疑新的版本Lucene还是不是这么搞的那就撸源码吧看的代码是2020-06-11直接从github 搞下来的。也可以参考官方文档按照书上的说法,直接找到Conjunctionxxx 相关的代码。发现了一个新的神奇类:org.apache.lucene.search.Con原创 2020-06-11 11:15:03 · 644 阅读 · 0 评论