AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

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

关注

评论

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

今日头条屏幕适配方案终极版正式发布!

android 程序员 移动开发

使用Flutter完成10个商业项目后的经验教训

android 程序员 移动开发

删除/var/lib/cni更换网络插件但是kubernetes没有正常启动

ilinux

互联网公司菜鸟成功逆袭进入阿里钉钉,从月薪 23K直接涨到了年薪65W(Android 岗面经)

android 程序员 移动开发

仿新浪微博客户端--界面设计(1)

android 程序员 移动开发

你必须要掌握的Android冷启动优化

android 程序员 移动开发

从Android开发者的角度看一看IOS和Flutter中的列表实现

android 程序员 移动开发

你知道 Android 面试官最喜欢问那些技术点嘛?这篇带你复盘往年面试题!

android 程序员 移动开发

京东把 Elasticsearch 用的真牛逼!

android 程序员 移动开发

什么,还有这么简单的OkHttp源码分析?

android 程序员 移动开发

【Java对象拷贝机制】使用CGlib实现Bean拷贝(BeanCopier)

码界西柚

对象拷贝 11月日更 BeanCopier

你知道Java类什么情况下会被初始化吗?

android 程序员 移动开发

你还在为-TCP-重传、滑动窗口、流量控制、拥塞控制发愁吗

android 程序员 移动开发

从零开始学数据结构和算法(四)哈希表的思想和二叉树入门

android 程序员 移动开发

从零开始实现一个插件化框架(一)

android 程序员 移动开发

以 29K 成功入职字节跳动,这份《 Android 面试笔记 》让我受益匪浅

android 程序员 移动开发

你是不是疯了,为什么字节跳动的Offer都不要了?

android 程序员 移动开发

你知道App为什么会Crash吗?

android 程序员 移动开发

使用协程优化你的业务

android 程序员 移动开发

互联网公司不招35岁以上程序员的真相

android 程序员 移动开发

traefik开放80端口时出现权限拒绝

ilinux

从0开始写一个基于Flutter的开源中国客户端(4)—

android 程序员 移动开发

优雅保活方案,原来Android还可以这样保活!

android 程序员 移动开发

作为Android开发者,你真的知道Android按下开机键到启动发生什么吗?

android 程序员 移动开发

二本吊打985?看到原因,网友们服气了!

android 程序员 移动开发

五年前的转正我没有留下,校招进不了大公司就是失败吗?

android 程序员 移动开发

五年开发经验杭州竟找不到工作:Android开发真等于废人?

android 程序员 移动开发

代码怎样review?

android 程序员 移动开发

你的产出是别的程序员的10倍,为什么无法获得10倍的工资?

android 程序员 移动开发

二本渣渣,3年开发,从web前端转到Android移动端后拿到头条offer的心路历程(面试需要积累

android 程序员 移动开发

今日头条技术架构分析

android 程序员 移动开发

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