搜索
文章平均质量分 84
stevewongbuaa
这个作者很懒,什么都没留下…
展开
-
2021-01-12
信息检索导论11-12章读书笔记概述11章,概率检索模型。以一个简单的贝叶斯定理出发,经过疯狂的公式变换+假设,最终得到了一个模型,然后说模型的检索性能不好。模型的扩展是BM25。BM25很棒。12章,基于语言建模的信息检索模型。每个文档对应一个模型,使用每个文档对应的模型去生成查询,看谁生成查询的概率大,概率大的排在前面。不过没有足够的证据来证明这个方法的效果能够大大超过一个经过精心调节参数后的传统向量空间模型。讲完了,全剧终。十分想躲避公式来讲,但是发现这两章真的躲不开,哪哪都.原创 2021-01-12 21:50:25 · 331 阅读 · 0 评论 -
SQLite FTS3 和 FTS4 插件
总览FTS3和FTS4是SQLite虚表模块,允许用户在一堆文档中实现全文搜索。用户输入一个短语(term),或者一些列term,然后这个系统找到一些列文档,最佳地匹配了哪些terms。这篇文章介绍了FTS3和FTS4的部署和使用FTS1和FTS2是过时的全文搜索模块。有一些已知的问题。FTS3的部分恭喜到了SQLite的项目中。现在作为SQLite的一部分被开发和维护。1、FTS3和FTS4的介绍FTS3和FTS4扩展模块允许用户创建特殊的表,内置了全文索引(FTS表)全文索引允许用户有效地查询数翻译 2020-08-08 18:53:29 · 1448 阅读 · 0 评论 -
Lucene实战-第2章-构建索引
本章要点执行基本索引操作在索引过程中对文档和域进行加权操作对日期、数字和可排序域进行索引高级索引技术如果想要搜索存储在硬盘上的文件、电子邮件、网页或是数据库中的数据,Lucene都可帮你完成。但在进行搜索前,你必须对搜索内容进行索引,Lucene同样能帮你完成,这就是本章要讨论的内容。在第1章我们演示了一个索引示例。本章将更深入讲解索引更新操作,如何通过参数来调整索引过程,以及更高级的索引技巧,从而帮助你更好理解Lucene。本章还将涉及Lucene索引的结构,使用多线程和多进程访问Luce原创 2020-07-31 17:45:11 · 575 阅读 · 0 评论 -
ES-Lucene-FST的原理是啥?跟Trie树的区别是啥?
参考Lucene-FST原创 2020-07-23 10:32:21 · 3928 阅读 · 0 评论 -
ES pinyin 插件 拼音搜索 原理 match_phase
背景中文搜索很多时候都要用到pinyin搜索,基本绕不开这个插件;如搜索人名之类的;介绍插件github:地址在README的最后,举的例子挺有意思;经过一系列操作之后,对刘德华建index,竟然搜liudh,刘dh,各种奇葩的搜索都能搜出来,这是为啥呢?让我们来仔细分析一下。如官网的配置配置analyzerPUT /medcl3/{ "settings" : { "analysis" : { "analyzer" : {原创 2020-06-18 15:35:58 · 1908 阅读 · 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 · 2811 阅读 · 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 · 989 阅读 · 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 · 1397 阅读 · 0 评论 -
Lucene 如何做多个拉链的交集
背景网上的文章各式各样,还不如看看源码参考比较靠谱的一个博主他的一本“书“ 写的比较明白,可供参考:看上面这个博客基本可以看懂原理。建议大家先读一读,配图也比较丰富,比较好理解。但是这个博客已经比较老了,不禁让人怀疑新的版本Lucene还是不是这么搞的那就撸源码吧看的代码是2020-06-11直接从github 搞下来的。也可以参考官方文档按照书上的说法,直接找到Conjunctionxxx 相关的代码。发现了一个新的神奇类:org.apache.lucene.search.Con原创 2020-06-11 11:15:03 · 589 阅读 · 0 评论 -
搜索引擎:Frame of Reference 和 Roaring Bitmaps
背景检索的时候,在做一些过滤操作的时候(与或非),实际上是对倒排索引的一个拉链归并操作。为了做高效地实现这个功能,ES采用了roaring bitmap的数据结构,参见文章比如拉链1:[1,2,3]&拉链2:[2,3,4]&拉链3:[3,4]...原创 2020-07-16 23:23:49 · 2094 阅读 · 1 评论 -
搜索引擎:ES的评分逻辑
背景难道不好奇怎么评分的吗!?直接先上例子参考官网注意 在有分片的情况下 需要用routing来限制在一个shard里再搞,不然都搞不清楚什么情况# 按照routing来索引PUT /hjx_test_index/doc/1?routing=text1&refresh=true{ "text" : "quick brown fox 11" }PUT /hjx_test_index/doc/2?routing=text1&refresh=true{ "text" : "ba原创 2020-07-16 22:53:47 · 477 阅读 · 0 评论 -
搜索引擎:ES没有Lexical Parser,对应的功能是怎么实现的?(是否真的需要Lexical Parser?)
背景上一篇文章我们提到了 搜索引擎:Lexical Parser 成分解析ES里没有这种模块,他是怎么实现这个类似的功能的呢分析假设我们的原始数据是// doc1{ "city": "南京", "type": "租房", "desc": "南京租房挺便宜"}// doc2{ "city": "南京", "type": "二手房" "desc": "南京二手房老贵了"}假设我们对city字段和type字段建索引,得到的倒排索引应该类似这样:city_南京:doc1 doc原创 2020-07-16 10:20:40 · 142 阅读 · 0 评论 -
搜索引擎:Lexical Parser 成分解析
这是啥?在搜索引擎中,对搜索query进行分析,分析出其pattern的一套算法举例:query: 南京二手房分析结果:南京:city; 二手房: typequery: 南昌二手房分析结果:南昌:city; 二手房: type这是怎么做到的呢?首先我们需要配置一些模板,定义我们一些召回的规则,如:词槽配置[city]南京南昌[type]二手房租房...原创 2020-07-15 20:36:33 · 296 阅读 · 0 评论