红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

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

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

关注

评论

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

ARTS-week-2

youngitachi

ARTS 打卡计划

SpringBoot整合Quartz实现任务定时

北漂码农有话说

SpringBoot 2

极客时间 - 架构师训练营 - week1 - 作业2

jjn0703

极客大学架构师训练营

ngrok穿越本地服务器,极客大学架构师训练营 第一课总结,John 易筋 ARTS打卡Week 03

John(易筋)

极客时间 极客大学 ngrok

软件建模与设计文档

大雄

UML

第一周总结

andy

第一周总结

架构师训练营-学习笔记-第一周

心在飞

极客大学架构师训练营

ARTS-02

NIMO

ARTS 打卡计划 ARTS活动

带你学够浪:Go语言基础系列 - 8分钟学复合类型

程序员柠檬

后端 Go 语言

作业1-食堂就餐卡系统设计

A Matt

[安利] WSL Linux 子系统,真香!附完整实操

猴哥一一 cium

Docker Linux 推荐 WSL2 Windows 10

年龄性别的问题,好像也不是太大问题……

zhoo299

生活 随笔

图解Java垃圾回收算法及详细过程!

周果

Java JVM 虚拟机 垃圾回收机制

面试了 6 轮 Google中国 之后,还是挂了

程序猿石头

面试 谷歌Google 经验分享 面经

ARTS 打卡 WEEK3

编程之心

ARTS 打卡计划

第一周学习总结

A Matt

极客大学架构师训练营

mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比,于是写了个插件。

why技术

Java 源码 mybatis

MySQL 笔记(二)日志系统

奈何花开

Java MySQL

第一周UML作业

吴建中

HBase 常用 Shell 命令手册

Rayjun

Java HBase

食堂就餐卡系统设计

大雄

scala callback hell

HackMSF

编程 最佳实践

ARTS-WEEK1

Allen

架构师训练营练习:食堂就餐卡系统设计

Shawn

史上最诡异问题,iOS 单例初始化两次,你遇到过吗?

liu_liu

ios 初始化 单例 两次

使用 Docker Desktop 中的 Kubernetes

FeiLong

Docker Kubernetes

第一周作业

andy

架构文档-作业01

ashuai1106

UML

程序员的晚餐 | 6 月 7 日 豆腐年糕

清远

美食

ARTS打卡Week 03

teoking

ios LeetCode

公司出了一款新产品,要不要招代理商?

石云升

用户增长 价值网依赖 产品定位 新产品

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