Bleve目录结构

栏目: Go · 发布时间: 6年前

内容简介:bleve是一个全文搜索引擎,golang里对标java的lucene,但是在结果封装等方面又借鉴了Elasticsearch很多设计,不得不说,不背负历史包袱更方便拨丝抽茧。本章开始我们尝试分析bleve的源码,个人是不喜欢读他人源码的,1.思想受限。2.破坏自己的风格。当然最主要的是读代码比写代码难 -_-! . 如果你能很好很快的hold住一份复杂代码,你的功底至少比作者高出1个level才实际。不过这不影响咱们读代码。懂不懂不重要,重要的是读没读是吧哈哈。废话不多说了,直接上一个图,然后嫖一下官网

bleve是一个全文搜索引擎,golang里对标 java 的lucene,但是在结果封装等方面又借鉴了Elasticsearch很多设计,不得不说,不背负历史包袱更方便拨丝抽茧。

本章开始我们尝试分析bleve的源码,个人是不喜欢读他人源码的,1.思想受限。2.破坏自己的风格。当然最主要的是读代码比写代码难 -_-! . 如果你能很好很快的hold住一份复杂代码,你的功底至少比作者高出1个level才实际。不过这不影响咱们读代码。懂不懂不重要,重要的是读没读是吧哈哈。

废话不多说了,直接上一个图,然后嫖一下官网文档,本章交差

Bleve目录结构

image

上图是bleve的目录结构。golang有着丧心病狂的包引用洁癖,所以 go 语言的程序分层相当讲究自上而下,这样也很方便阅读。

bleve

是top-level 的package,他的存在是更好的调用,包装下层package。

Analysis

分析器的包,将文本打成term,这个我比较熟,这个包一般不会调用其他包里面的内容,比较独立.

Analyzers

analyzers 就是一个完整的分词器,顺路插一句,bleve的分词器插件比起lucene相对简单不少,一个analyzers里面一般有一个Tokenizer,用于词语片段化,多个TokenFilter。用于过滤转换。

ByteArrayConverters

故名思议,byte数组转换,好吧我实话实说,写这个文章的此时此刻,我还没看过代码这么细的地方。so我感觉不到这个玩意的存在。

DateTime Parsers

时间日期的解析

Language

这个包实现了多种语言的分析器,but没有中文的,lucene里面包了一个smartcn的分词器,话说中文分词器依赖词典模型,反而还是以插件的形式比较稳妥。对于我来说一个standard一个keywords分词器就可以随便浪了,不在乎。

Token Filters

词干抽取的过滤器,停用词呀啥的。

CharFilters

字符过滤,没什么好说的,写转换,全半角转换,啥的。

Token Maps

不知何物,貌似从一个文件读取一个词或短语,还吃了bool表达式。

Tokenizers

分词器,你如果自己写分词器主要是写这里

Document

文档包包含与bleve文档和字段相关的代码。一个文档包含多个字段,一个字段包含多个term。这是bleve中的索引单元。

Index

index包是将索引数据写入到磁盘的功能。方便search。

Store

存储包,是一个文档持久化的 工具 包,实现了kv接口,可以挂载多个kv数据库。如leveldb rockdb啥的。

upside_down

upside_down包是倒排索引实现。它可以使用任何存储实现。它包含关于如何编码单个行的所有细节。

HTTP

一个简易的api服务,作者的意思是是可用可不用。json协议。

Registry

通过名称提供一些注册服务,类似cache。比如分词器等,应该算是一种 设计模式 吧。这还有助于序列化索引映射并将它们与索引一起持久化。

Search

搜索包的代码主要是实现搜索方法,这个包依赖index包的接口,然后就不依赖其他了。

Collectors

收集器包负责从所有结果中收集所需的结果并打分。用堆排序,选取topN,

Facets

负责从结果集中收集数据,然后构建

Highlight

高亮包,负责在返回结果中命中高亮文本。没什么好说的

Scorers

Scorers 负责堆搜索结果打分,这个打分可能是中间结果,Collectors来调用,

Searchers

这个包里面包含了实际的搜索实现。后面争取我们可以细致分析

Utils

这个包包含了所有的命令行实现,在新版本里面是cmd包。

实际上你能发现,目前包结构和当前这份文档对不上了。打开时光机回到项目初生的时候看看

Bleve目录结构

image

果然这老头已变初心


以上所述就是小编给大家介绍的《Bleve目录结构》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浅薄

浅薄

[美]尼古拉斯·卡尔 / 刘纯毅 / 中信出版社 / 2015-11 / 49.00 元

互联网时代的飞速发展带来了各行各业效率的提升和生活的便利,但卡尔指出,当我们每天在翻看手机上的社交平台,阅读那些看似有趣和有深度的文章时,在我们尽情享受互联网慷慨施舍的过程中,我们正在渐渐丧失深度阅读和深度思考的能力。 互联网鼓励我们蜻蜓点水般地从多种信息来源中广泛采集碎片化的信息,其伦理规范就是工业主义,这是一套速度至上、效率至上的伦理,也是一套产量最优化、消费最优化的伦理——如此说来,互......一起来看看 《浅薄》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具