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)