OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

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:196443
用户头像

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

关注

评论

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

你期待的薪酬是多少?

escray

学习 面试

Docker 安装及配置镜像加速

哈喽沃德先生

Docker 容器 微服务

看智微智能互动录播系统如何建设“三个课堂”

InfoQ_967a83c6d0d7

并发神器CSP的前世今生

soolaugust

并发编程 并发 Go 语言

前端科普系列(3):CommonJS 不是前端却革命了前端

vivo互联网技术

Java 大前端 脚本

1.Flink任务之间通信开销-6

小知识点

scala 大数据 flink

大数据技术思想入门(三):分布式文件存储的流程

cristal

Java 大数据 hadoop 分布式

想不出来问题的你

escray

学习 面试

“深化产教融合·共育数字人才”全国产教融合信息化高峰论坛·江苏站成功举办

InfoQ_967a83c6d0d7

LeetCode680-验证回文字符串 Ⅱ-Easy

书旅

LeetCode

Python代码调试指南

王坤祥

Python Python基础

rockchip的yocto编译环境搭建

良知犹存

Linux yocto rockchip

要刷LeetCode了,才发现自己连时间复杂度都不懂

大头星

算法 LeetCode

从Vessel到二代裸金属容器,云原生的新一波技术浪潮涌向何处?

华为云开发者联盟

Docker 容器 云原生 k8s Vessel

解读 Reference

浮白

ThreadLocal Reference ReferenceQueue Finalizer WeakHashMap

前端科普系列(2):Node.js 换个角度看世界

vivo互联网技术

node.js 大前端

Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存

newbe36524

Docker 云计算 微服务 .net core ASP.NET Core

utf8字符集下的比较规则

Simon

MySQL 字符集

代理模式详解

大头星

ARTS打卡Week 11

teoking

【程序员自救指南】中关村保洁大叔的一句话竟然帮我转正了

华为云开发者联盟

服务器 数字化 华为云 企业上云 云服务器

JavaScript 测试系列实战(一):使用 Jest 和 Enzyme 测试 React 组件

图雀社区

单元测试 自动化测试 Jest

前端科普系列(4):Babel —— 把 ES6 送上天的通天塔

vivo互联网技术

Java 大前端 ES6

一家估值20亿美元的公司,竟然没有办公室?

Atlassian

远程办公 Atlassian Jira

关于Aborted connection告警日志的分析

Simon

MySQL MySQL错误日志

详解责任链模式

大头星

LeetCode1160---拼写单词---Easy

书旅

LeetCode

架构师训练营第十一周作业

Melo

想问面试官什么问题么?

escray

学习 面试

6. 二十不惑,ObjectMapper使用也不再迷惑

YourBatman

json Jackson ObjectMapper

我与游戏相伴【自我访谈2】

叶阳夏烟

系列 游戏 访谈录 剧情游戏 仙剑奇侠传

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