Bleve目录结构

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

内容简介: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目录结构》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

jQuery实战(第2版)

jQuery实战(第2版)

[美]Bear Bibeault、[美]Yehuda Katz / 三生石上 / 人民邮电出版社 / 2012-3 / 69.00元

jQuery 是目前最受欢迎的JavaScript/Ajax 库之一,能用最少的代码实现最多的功能。本书全面介绍jQuery 知识,展示如何遍历HTML 文档、处理事件、执行动画、给网页添加Ajax 以及jQuery UI 。书中紧紧地围绕“用实际的示例来解释每一个新概念”这一宗旨,生动描述了jQuery 如何与其他工具和框架交互以及如何生成jQuery 插件。 本书适合各层次Web 开发人......一起来看看 《jQuery实战(第2版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具