Bluge 技术文档
bluge indexing library for Go 项目地址: https://gitcode.com/gh_mirrors/bl/bluge
1. 安装指南
1.1 环境要求
- Go 语言环境(建议版本 >= 1.16)
- Git
1.2 安装步骤
-
克隆项目仓库
git clone https://github.com/blugelabs/bluge.git cd bluge
-
安装依赖
go mod tidy
-
运行测试
go test ./...
2. 项目使用说明
2.1 项目概述
Bluge 是一个现代化的 Go 语言文本索引库,支持多种字段类型和查询类型,适用于构建高效的文本搜索系统。
2.2 主要功能
- 字段类型:支持文本、数值、日期、地理点等字段类型。
- 查询类型:支持术语查询、短语查询、匹配查询、前缀查询等多种查询类型。
- 相似度评分:支持 BM25 相似度评分,并提供可插拔的接口。
- 搜索结果高亮:支持搜索结果匹配高亮显示。
- 可扩展聚合:支持桶聚合、指标聚合等多种聚合方式。
3. 项目 API 使用文档
3.1 索引文档
config := bluge.DefaultConfig(path)
writer, err := bluge.OpenWriter(config)
if err != nil {
log.Fatalf("error opening writer: %v", err)
}
defer writer.Close()
doc := bluge.NewDocument("example").
AddField(bluge.NewTextField("name", "bluge"))
err = writer.Update(doc.ID(), doc)
if err != nil {
log.Fatalf("error updating document: %v", err)
}
3.2 查询文档
reader, err := writer.Reader()
if err != nil {
log.Fatalf("error getting index reader: %v", err)
}
defer reader.Close()
query := bluge.NewMatchQuery("bluge").SetField("name")
request := bluge.NewTopNSearch(10, query).
WithStandardAggregations()
documentMatchIterator, err := reader.Search(context.Background(), request)
if err != nil {
log.Fatalf("error executing search: %v", err)
}
match, err := documentMatchIterator.Next()
for err == nil && match != nil {
err = match.VisitStoredFields(func(field string, value []byte) bool {
if field == "_id" {
fmt.Printf("match: %s\n", string(value))
}
return true
})
if err != nil {
log.Fatalf("error loading stored fields: %v", err)
}
match, err = documentMatchIterator.Next()
}
if err != nil {
log.Fatalf("error iterator document matches: %v", err)
}
4. 项目安装方式
4.1 通过 Go Modules 安装
go get github.com/blugelabs/bluge
4.2 通过 Git 克隆安装
git clone https://github.com/blugelabs/bluge.git
cd bluge
go mod tidy
5. 许可证
本项目采用 Apache License Version 2.0 许可证。详细信息请参阅 LICENSE 文件。
通过以上文档,您可以快速了解并开始使用 Bluge 项目。如有任何问题,请参考项目 GitHub 仓库 或联系项目维护者。
bluge indexing library for Go 项目地址: https://gitcode.com/gh_mirrors/bl/bluge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考