写点什么

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

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

关注

评论

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

给打工人熬一锅「毒」鸡汤

Java_若依框架教程

程序员 打工人 毒鸡汤

Scrapy 源码剖析(四)Scrapy如何完成抓取任务?

Kaito

Python 爬虫 Scrapy 源码剖析

java安全编码指南之:文件和共享目录的安全性

程序那些事

代码规范 java安全 java安全编码指南 java编码 程序那些事

为什么 React Hooks 优于 HOCs(译)

西贝

Java 翻译 React Hooks HOC

1分钟教你如何整理 React 知识体系

Leo

学习 大前端 React

阿里二面惨败,痛定思痛狂刷1000+面试题,成功五面上岸滴滴(面经+面试题分享)

Java架构追梦

Java 架构 腾讯 面试 蚂蚁金服

TCP/IP 基础知识总结

苹果看辽宁体育

后端 计算机网络 计算机

Redis还可以做哪些事?

Java旅途

redis

Flink State 误用之痛,你中招了吗?

Apache Flink

flink

网络直播打赏背后的套路:刺激用户不理智消费

石头IT视角

基于服务设计的线上展览

京东科技开发者

云安全

JAVA魅力之神奇的数组带给你不一样的乐趣

小Q

Java 学习 架构 面试 数组

架构师训练营第 1 期第 7 周作业

业哥

老板下了死命令,要把日志系统切换到Logback

沉默王二

Java logback 日志系统

训练营第二周作业

爱码士

接口测试(apipost、jmeter和python脚本)

测试人生路

Python 接口测试 测试工具

队列实现栈的3种方法,全都击败了100%的用户!

王磊

Java 算法和数据结构

轻量型GPU应用首选 京东智联云推出NVIDIA vGPU实例

京东科技开发者

人工智能 gpu

从零实现一个动态表单设计(编辑)器

徐小夕

Java 编辑器 H5 Node React

【架构师训练营 1 期】第六周作业

诺乐

元模型驱动(一)构建元模型ーGME入门

KaYa

DDD Kaya MDA GME MDD

训练营第二周课程总结

爱码士

训练营

sharding-jdbc 分库分表的 4种分片策略,还蛮简单的

程序员小富

Java 分库分表

元模型驱动(二)构建元模型ーGME构建分层模型

KaYa

DDD Kaya MDA GME MDD

面试官:讲一下缓存穿透、缓存雪崩和缓存击穿?

bigsai

redis 缓存穿透 缓存击穿 缓存雪崩

酷睿i5-10600KF对标锐龙7 3700X,游戏表现领先且售价更香

E科讯

Go 与异步 IO - io_uring 的思考

IceberGu

Linux 异步IO io_uring Go 语言

Java-技术专题-时间工具类的使用方案

码界西柚

5G应用的实时决策

VoltDB

5G 物联网 工业互联网 技术分享

进“大厂”的故事

北风

职业规划 职业成长 大厂

【架构师训练营 1 期】第六周学习总结

诺乐

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