HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

MongoDB的几个常见问题

程序员架构进阶

mongodb 集群 28天写作 4月日更 实战问题

文字变图片——GitHub 热点速览 v.21.14

HelloGitHub

GitHub 开源

千万不要轻易尝试“熊猫烧香”,这不,我后悔了!

冰河

互联网 网络安全 信息安全 渗透 蠕虫

如何帮助一个新人快速融入团队

码猿外

团队协作 敏捷精益

#架构训练营作业一

吴猛

《基于实践,设计一个百万级别的高可用&高可靠的IM消息系统》

后台技术汇

后端 消息系统 签约计划 引航计划 内容合集

硬核图解红黑树并手写实现

Silently9527

Java 数据结构与算法 红黑色

Python基础之:Python中的内部对象

程序那些事

Python Python3 程序那些事

模块1作业

段吉贵

架构实战营

Vite 2 + React 实践

清秋

less vite antd React 4月日更

每日总结-2021-04-05

cyningchen

关于微信架构

俞嘉彬

支持向量机实现光学字符识别

不脱发的程序猿

人工智能 机器学习 4月日更 支持向量机 实现光学字符识别

让大家喘口气休息一下吧,工作中事情众多烦心时,让我们与工作独处一会儿。

叶小鍵

设计模式-六大设计原则

U2647

设计模式 设计原则 4月日更

模块一:课后作业

菲尼克斯

架构实战营

架构实战营模块1作业

白发青年

架构实战营

Rust从0到1-所有权-切片类型

rust slices 切片

编程好习惯之理清函数参数

顿晓

编程好习惯 4月日更

学生管理系统方案架构设计

俞嘉彬

说人话

ES_her0

4月日更

架构训练

return

Kubernetes中的CI/CD

倪朋飞

Kubernetes DevOps CI/CD

VUE2,基于vue-cli搭建创建vue项目

Chalk

Vue 大前端 4月日更

零基础学Tableau系列 | 05—(进阶)数据集合并、符号地图、智能显示、插入自定义形状、仪表板

不温卜火

数据可视化 数据清洗 4月日更

“学生管理系统”毕设架构设计

Vincent

架构实战营

极速精简 Go 版 Logstash

万俊峰Kevin

Logstash go-zero Go 语言

联邦查询引擎Presto源码编译与调试

小舰

源码剖析 presto 4月日更

starforce源码解读一:关键字partial

风翱

C# 源码阅读 4月日更 游戏框架

你朋友牛逼跟你有什么关系?

小天同学

自我思考 个人感悟 人生修炼 4月日更

Ansible 教程

码语者

DevOps ansible

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