使用BoltDB开始使用Bleve

时间:2016-01-24 06:55:08

标签: go boltdb bleve

我正试图将我的头脑包围在Bleve中,我理解教程,视频和文档中正在发生的一切。然而,当我在BoltDB上使用它并且不知道如何启动时,我感到非常困惑。

假设我有一个名为data.db的BoltDB数据库,其中填充了struct type Person

的值
type Person struct {
   ID int          `json:"id"`             
   Name string     `json:"name"` 
   Age int         `json:"age"`
   Sex string      `json:"sex"`
}

如何索引此数据以便我可以进行搜索?如何处理将来存储在数据库中的数据的索引?

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:6)

Bleve使用BoltDB作为多个后端存储之一,并与存储应用程序数据的位置分开。要在Bleve中索引数据,只需添加Index

即可

index.Index(person.ID, person)

index与您的申请数据分开存在(无论是在Bolt,Postgres等)。

要检索您的数据,您需要使用bleve.NewSearchRequest()构建搜索请求,然后调用Index.Search()。这将返回SearchResult,其中包含Hits字段,您可以在其中检索对象的ID。您可以使用它来查找应用程序数据存储中的对象。

免责声明:我是BoltDB的作者。

答案 1 :(得分:1)

索引数据的方式取决于您想要查询数据的方式。

如果你想通过任何字段查询,比如{Age:15,Name:“Bob”},那么BoltDB并不适合你的问题。

BoltDB只是一个键值存储,可以快速访问顺序键和高效的前缀搜索。它并不是一般用途数据库的替代品。

您可能想要更像文档存储(即:MongoDB)或RDBMS(即:PostgreSQL)。

如果您只是想要使用简单文件并嵌入的内容,您也可以SQlite使用Go module

如果您只想搜索ID或名称等单个字段,请将其用作密钥。

如果查找速度根本不重要,我猜你可以使用Bolt迭代整个数据库,解析json并检查字段。但这可能是你可以采取的最糟糕的方法。