写点什么

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

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

关注

评论

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

2023-01-11:体育馆的人流量。编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。返回按 visit_date 升序排列 的结果表。 DROP TAB

福大大架构师每日一题

MySQL 福大大

2023年有哪些具备潜力的加密投资标的?

股市老人

应用 Serverless 化,让业务开发心无旁骛

阿里巴巴中间件

阿里云 Serverless 云原生

IoTLink 轻量级的物联网综合业务支撑平台

山东云则信息科技

Java 物联网 spring-boot

MarkDown简明语法手册

Geek_7ubdnf

markdown

天翼云荣获2022年度“边缘计算先锋企业”“分布式云先锋企业”称号!

天翼云开发者社区

阿里巴巴重磅开源云原生网关: Higress

阿里巴巴中间件

阿里云 云原生 Higress

微服务引擎 MSE 升级至 3.0:降低微服务在云原生时代的演进成本

阿里巴巴中间件

阿里云 微服务 云原生

GAN:生成对抗网络 Generative Adversarial Networks

Geek_7ubdnf

神经网络

IoTLink v1.2.1 最新公告

山东云则信息科技

Java 物联网 springboot

《天翼云安全白皮书》发布!共铸国云安全生态!

天翼云开发者社区

您有一套专属权益已送达,请注意查收

天翼云开发者社区

项目制实践如何助力组织进化

feijieppm

项目管理 研发效能 技术管理 文化 & 方法 效能度量

DW-Siam:Deeper and Wider Siamese Networks for Real-Time Visual Tracking 更宽更深的孪生网络

Geek_7ubdnf

神经网络

混沌演练实践(一)

京东科技开发者

测试 混沌工程 系统 混沌测试 企业号 1 月 PK 榜

容器服务与达摩院合作 AHPA 获 AAAI 2023 IAAI人工智能创新应用奖

阿里巴巴中间件

阿里云 容器 云原生

事件总线 + 函数计算构建云上最佳事件驱动架构应用

Serverless Devs

DIMP:Learning Discriminative Model Prediction for Tracking 学习判别模型预测的跟踪

Geek_7ubdnf

神经网络

Java高手速成 | 实现人物拼图游戏

TiAmo

Java 拼图

问题盘点|使用 Prometheus 监控 Kafka,我们该关注哪些指标

阿里巴巴中间件

kafka 阿里云 云原生 Prometheus

TapTap算法平台的 Serverless 探索之路

Serverless Devs

阿里云AIoT 经典基础知识 快问快答——基础知识

阿里云AIoT

Serverless 物联网 API 消息中间件 弹性计算

安全可信| 密评合规!天翼云全栈混合云通过商用密码应用安全性评估!

天翼云开发者社区

大规模 Kubernetes 集群故障注入的利器-ChaosBlade

阿里巴巴中间件

阿里云 Kubernetes 云原生 ChaosBlade

RatingBar(星级评分条)

芯动大师

Android Studio 星级评分条 ratingbar

效能改进中的度量实践

feijieppm

项目管理 研发效能 技术管理 文化 & 方法 效能度量

Higress 开源后,我们整理了开发者最关心的 15 个问题

阿里巴巴中间件

阿里云 云原生 Higress

大前端—2022明星项目,2023展望

非喵鱼

JavaScript Vue 前端 React 前沿技术

2023年了 对Go做一个全网最全的总结

卡二条

Go Go Concurrency Patterns Go web

「认知」打工人的自我修养

职场 认知

GA-RPN:Region Proposal by Guided Anchoring 引导锚点的建议区域网络

Geek_7ubdnf

神经网络

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