写点什么

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

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

关注

评论

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

双11狂欢背后,火山引擎数智平台为品牌做了这件事

字节跳动数据平台

大数据 营销数字化 火山引擎

数字先锋| 教育资源乘云而来!46万城乡学子共享名师课堂

天翼云开发者社区

【从零开始学爬虫】采集同花顺基金评论数据

前嗅大数据

数据采集 爬虫软件 爬虫教程 数据采集教程 爬虫案例

天翼云打造自研云操作系统TeleCloudOS4.0 推动算力蓬勃发展

天翼云开发者社区

奖金+生态双丰收 首届昇腾AI创新大赛圆满收官

Geek_2d6073

天翼云实时云渲染,助力打造世界VR产业大会云上之城

天翼云开发者社区

基金交易场景下,如何利用 Apache APISIX 来稳固 API 安全

API7.ai 技术团队

安全 金融行业 api 网关 APISIX

视频服务HDR Vivid 还原色彩,让所见成“真”

HarmonyOS SDK

视频 HMS Core

架构实战训练营模块 5 作业

atcgnu

Linux内存泄露案例分析和内存管理分享

京东科技开发者

负载均衡 集群 内存泄漏 Linux Cron 运维、

软件测试面试真题 | TCP为什么要进行三次握手和四次挥手呢?

测试人

三次握手 软件测试 自动化测试 测试开发 TCP四次挥手

网络地址转换(NAT)(三)

我叫于豆豆吖.

11月月更

函数计算|如何使用层解决依赖包问题?

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

手写一个webpack插件

Geek_02d948

webpack

技术贴 | Rocksdb 中 Memtable 源码解析

KaiwuDB

数据库

【#HDC2022】HarmonyOS体验官活动正式开启,赶快投稿赢限量奖品吧!

HarmonyOS开发者

HarmonyOS

面向对象基础

断墨寻径

面向对象 java;

java文件流

hello java

文件 程序 Java core 11月月更

智慧公路筑基者!天翼云打造全栈能力新底座

天翼云开发者社区

融云 K 歌解决方案,应用丰富互动模式的「万能卡」

融云 RongCloud

互动平台

三面阿里java后台开发岗总结:进阿里必看这份究极面试文档

钟奕礼

Java 编程 java程序员 java面试 java架构

Jmix 1.4 功能概览

世开 Coding

企业级低代码 Jmix 企业级应用程序开发

共享开源技术,共建开放生态丨平凯星辰余梦杰出席 2022 世界互联网大会开源论坛圆桌对话

PingCAP

开源

快速满足个性化业务需求的低代码平台

力软低代码开发平台

网络地址转换(NAT)(二)

我叫于豆豆吖.

网络 11月月更

企业开发首选安全框架!阿里顶配版Spring Security OAuth2.0认证授权核心技术全解真香

Java永远的神

Java 源码 springboot springsecurity 安全框架

为什么变压器经常烧毁?怎么预防解决?

元器件秋姐

元器件采购 华秋商城 变压器 变压器安全

TiKV 源码阅读三部曲(三)写流程

PingCAP

源码阅读

让迁移不再开盲盒,让云也能省钱丨Hackathon 项目背后的故事第一期回顾

PingCAP

hackathon

探究并发和并行、同步和异步、进程和线程、阻塞和非阻塞、响应和吞吐等

C++后台开发

多线程 后端开发 并行 linux开发 C++开发

钢网有多个种类,各自的用法都了解吗?

华秋PCB

PCB PCB设计 PCB生产

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