Go 文本索引库:Bleve

jopen 10年前

Bleve,发音为 BLEH-vee,是一个现代化的 Go 搜索索引库。Bleve 是使用 Go 编写的现代化文本索引库,支持各种常用的搜索索引,包括过滤,排序和分类。

当使用 Java 和 JVM 的时候使用比较多的是 Lucene,Elasticsearch 和 Solr。但是有时候不想要那么多依赖,想要避免外部服务,简单编译部署就可以运行。所以 Couchbase 团队就构建了一个 Go 库,支持大部分 Lucene 常规使用的文本分析组件,可以使用 off-the-shelf key-value (KV) 存储。

特性:

  • 支持任何 go 数据架构索引,包括 JSON

  • 通过强大的配置智能默认备份

  • 支持字段类型

    • Text, Numeric, Date

  • 支持查询类型

    • Term, Phrase, Match, Match Phrase, Prefix

    • Conjunction, Disjunction, Boolean

    • Numeric Range, Date Range

    • 人类条目的简单查询语法

  • tf-idf Scoring

  • 默认搜索匹配结果高亮

  • 支持聚合 Facets:

    • Terms Facet

    • Numeric Range Facet

    • Date Range Facet

索引

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)


项目主页:http://www.open-open.com/lib/view/home/1426056832107