写点什么

Bleve: 来自 Couchbase、基于 Go 语言的全文索引与检索库

  • 2015-03-26
  • 本文字数:1000 字

    阅读完需:约 3 分钟

Bleve 是一个由 Couchbase 团队基于 Go 语言开发的索引 / 检索库,它支持常用的检索和索引功能,如索引、检索、过滤、排序、聚合、高亮等。Bleve 包括常见的文本分析组件,且能够使用现有的 K/V 存储系统进行存储。Bleve 具有以下主要特性:

  • 支持所有 Go 数据结构的索引,如 JSON 、结构体、Slices、字符串等
  • 具有强大、智能的配置功能
  • 具有丰富的 Field 类型,如文本、数字、日期等
  • 具有丰富查询类型,如 Term、短语、模糊 / 精确匹配、前缀、逻辑与(Conjunction)、逻辑或(Disjunction)、布尔(Boolean)、数字范围、日期范围等查询
  • 具有简单的查询语法,且能够实现复杂的查询
  • 具有丰富的接口,且能够实现功能扩展
  • 具有易用且高级 API 能够索引数据模型中的任何对象
  • 基于标准的 TF-IDF 加权评分算法
  • 支持查询匹配结果的高亮显示
  • 支持多种聚合功能 (Facet),如能够根据 Term、数字范围、日期范围聚合等
  • 文本解析组件现已支持众多分析组件,支持将近二十种语言,如丹麦语、荷兰语、英国、法语、德语、泰语、土耳其语等

索引和检索示例如下:

索引示例

复制代码
message := struct{
Id string
From string
Body string
}{
Id: "example",
From: "marty.schoch@gmail.com",
Body: "bleve indexing is easy",
}
mapping := bleve.NewIndexMapping()
index, err := bleve.New("example.bleve", mapping)
if err != nil {
panic(err)
}
index.Index(message.Id, message)

检索示例

复制代码
> index, _ := bleve.Open("example.bleve")
> query := bleve.NewQueryStringQuery("bleve")
> searchRequest := bleve.NewSearchRequest(query)
> searchResult, _ := index.Search(searchRequest)

Bleve 基于 Apache License Version 2.0 协议开源,其代码托管在 GitHub 。为了减少项目依赖、简化编译与部署,于是,Couchbase 团队抛弃了 Java 环境下的 Lucene 方案(如 Lucene、Elasticsearch、Solr 等),并构建了 Bleve。它为开发者提供了一个 Go 语言环境下的全文检索新方案。读者可以通过官方提供的 Bleve Wiki 内容在线检索实例以体验Bleve 的检索功能效果。更多关于Bleve 的内容,请读者查看GitHub 提供的 Wiki 页面或其官网。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-26 00:197567
用户头像

发布了 46 篇内容, 共 55.4 次阅读, 收获喜欢 15 次。

关注

评论

发布
暂无评论
发现更多内容

一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?

华为云开发者联盟

sql jdk OOM

云上看警博会黑科技,得益于华为云打造的“云之盾”

脑极体

架构师训练营第一期-第十周课后作业

卖猪肉的大叔

极客大学架构师训练营

京东11.11大促背后,那些系统架构经历了些什么?

京东科技开发者

数据库 云计算 云服务

架构师训练营第一期-第十周学习总结

卖猪肉的大叔

极客大学架构师训练营

优秀商业可视化大屏(BI)设计演示

Marilyn

UI 商业智能

基于区块链的区域股权市场创新试点

CECBC

区块链

【Linux开发】编写属于你的第一个Linux内核模块

程序员小灰

c++ Linux 后台开发 架构师 服务器开发

面试官问我:Object o = new Object() 占用了多少个字节?

moon聊技术

JVM Java虚拟机 JVM虚拟机原理

anyRTC 11月SDK更新

anyRTC开发者

flutter uni-app WebRTC RTC sdk

完了!这57道面试题(美团、BAT、携程),我咋一个都不会?

比伯

Java 程序员 架构 面试 计算机

软件架构指南

码界行者

软件架构

架构师训练营 - 第 10 周课后作业(1 期)

Pudding

京东成立探索研究院,打造产业数智化首个源头性科技高地; AI 论文:让机器像人类一样感知三维真实世界

京东科技开发者

人工智能 云计算

划重点!DWS开发的五大要点

华为云开发者联盟

数据库 sql DWS

阿里云在应用扩缩容下遇到的挑战与选型思考

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生

消防物联网,为逆行英雄守住第一道生命线

华为云开发者联盟

物联网 控制 消防

架构训练营 - 第10周课后作业 - 学习总结

Pudding

40 张图带你搞懂 TCP 和 UDP

编程 程序员 大前端 后端 网络

【经验分享】打破CMDB认知误区,掌握建设关键!

嘉为蓝鲸

运维 运维自动化 数据可视化 CMDB 配置信息

盘点c++几种常见的设计模式及具体实现

linux大本营

c++ Linux 后台开发

shell脚本的使用该熟练起来了,你说呢?(篇二)

良知犹存

Shell

1. 揭秘Spring类型转换 - 框架设计的基石

YourBatman

Spring Framework 类型转换 Converter

架构师训练营 - 第 11 周课后作业(1 期)

Pudding

区块链系统面临哪些风险以及有哪些防范措施

CECBC

区块链

阿里技术专家熬夜一个月肛出内部“微服务学习笔记”,太完美了

小Q

Java 学习 编程 面试 微服务

小白也能看懂!教你如何快速搭建实用的爬虫管理平台

华为云开发者联盟

Python Docker jenkins

Jenkins使用ansible时出现!unreachable错误

Griffenliu

LeetCode题解:455. 分发饼干,贪心for循环,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

金融科技带来套利?专家认为监管应关注平台垄断、权力滥用等问题

CECBC

金融科技

写在日更之前,持续书写,见证文字的力量

boshi

随笔 随笔杂谈

Bleve:来自Couchbase、基于Go语言的全文索引与检索库_语言 & 开发_李小兵_InfoQ精选文章