NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

拥抱未来:大语言模型解锁平台工程的无限可能

SEAL安全

平台工程 12 月 PK 榜 大语言模型

springboot集成activiti工作流实际项目(自定义工作流)

金陵老街

企业服务大模型扎根生产一线,用友BIP为中国智造“再续新篇”!

用友BIP

企业大模型

关于组态图和组态图设计

2D3D前端可视化开发

组态软件 组态 组态图库 组态界面 组态工具

“软件赋能·链接未来”世亚国际软件产品博览会(世亚软博会)

AIOTE智博会

软件展会

聊点技术|数据爆炸性增长,Bonree ONE存储如何做到稳如泰山

博睿数据

数据库面试题从浅入深高频必刷「2024版」

王中阳Go

MySQL 数据库 后端 面试题 面经

时间复杂度为 O(n^2) 的排序算法 | 京东物流技术团队

京东科技开发者

算法 排序算法 O(n^2)

基于机器深度学习的交通标志目标识别

3D建模设计

人工智能 机器学习 目标检测 目标识别 虚幻引擎合成数据生成

哈工大副校长刘挺访问度小满 推进人工智能等方面技术合作

科技热闻

每日一题:LeetCode-41. 缺失的第一个正数

半亩房顶

面试 算法 数组 LeetCode 哈希表

微软远程管理Microsoft Remote Desktop怎么样?好用吗?

Rose

Mac远程控制软件 microsoft remote desktop mac破解软件下载 微软远程管理

用友电子凭证综合服务平台2.0重磅发布!

用友BIP

电子凭证

探索 Tokio Runtime丨Fabarta 技术专栏

Fabarta

人工智能 rust 图数据库 rust开发者大会 ​Rust

测试用例设计方法六脉神剑——第一剑:入门试招,等价边界初探 | 京东物流技术团队

京东科技开发者

测试 测试用例 测试 单元测试

企业业务场景如何实现自动化连接?

RestCloud

AppLin 自动化连接

如何在 Mac 上创造一个纯 Windows 环境

Rose

Parallels Desktop

高精度时序分析工具PP-TSv2!一站式解决电力负荷预测、设备异常检测等多场景任务

飞桨PaddlePaddle

人工智能 开发者 开发工具 技术干货 时序分析工具

C语言自定义类型 | AI工程化部署

AIWeker

c AI工程化部署

TinyVue 组件库助力赛意信息获得工业软件种子奖

OpenTiny社区

开源 前端 组件库

Wireshark中的ARP协议包分析

小魏写代码

SQL 也能搞复杂时序查询?-使用 SQL 在 GreptimeDB 上做 Range 查询

Greptime 格睿科技

数据库 sql 时序数据库

ios-class-guard - iOS代码混淆与加固实践

雪奈椰子

云起无垠CEO沈凯文博士获评“2023年度技术突破者”奖

云起无垠

代购系统独立站的未来发展前景

Noah

石磊:以人为本,精细运营 ,企业招聘管理的下半场

用友BIP

智能招聘

去哪儿“技术债”偿还实践:如何高效、低风险砍掉50%无用代码?

TakinTalks稳定性社区

电子竞技将引发LED屏幕行业新一轮竞争

Dylan

电竞 电竞产业 LED显示屏 全彩LED显示屏 led显示屏厂家

高效会议指南:九种让你的会议更有价值的方法

PingCode

团队 会议

springboot如何用jar包启动,同时为不同机房设置不同的配置文件 | 京东云技术团队

京东科技开发者

Java spring 后端 spring-boot jar包

专家观点∣用未来思考今天,ERP国产化价值替代的“五识”进阶能力

用友BIP

国产化价值替代

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