BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Bleve:来自Couchbase、基于Go语言的全文索引与检索库

| 作者 李小兵 关注 0 他的粉丝 发布于 2015年3月27日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT