我正试图把我的头围绕着流血,我理解在教程,视频和文档中所发生的一切。然而,当我在BoltDB上使用它而不知道如何开始时,我感到非常困惑。
假设我有一个名为BoltDB的现有data.db数据库,其中填充了结构类型Person的值。
type Person struct {
ID int `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
Sex string `json:"sex"`
}如何对这些数据进行索引以便进行搜索?如何处理将来存储在数据库中的数据的索引?
任何帮助都将不胜感激。
发布于 2016-01-24 20:53:15
Bleve使用BoltDB作为几个后端存储区之一,它与存储应用程序数据的位置是分开的。要在Bleve中索引数据,只需添加Index即可。
index.Index(person.ID, person)
index与您的应用程序数据是分开存在的(无论它是在Bolt、Postgres等中)。
要检索数据,您需要使用bleve.NewSearchRequest()构造一个搜索请求,然后调用Index.Search()。这将返回一个SearchResult,其中包括一个Hits字段,您可以在该字段中检索对象的ID。您可以使用它在应用程序数据存储中查找对象。
免责声明:我是BoltDB的作者。
发布于 2016-01-24 17:45:57
如何索引数据取决于如何查询数据。
如果您想通过任意字段进行查询,如{Age:15,Name:"Bob"},那么BoltDB并不适合您的问题。
BoltDB是一个简单的键值存储,具有快速访问顺序密钥和高效查找前缀的功能。它实际上并不是通用数据库的替代品。
您可能需要更像文档存储(即: MongoDB)或关系数据库管理系统(即: PostgreSQL)的东西。
如果您只想要使用简单文件并嵌入的东西,也可以将SQlite与Go模块一起使用。
如果只想按单个字段(如ID或Name )进行搜索,请使用该字段作为键。
如果查找速度一点也不重要,我想您可以使用Bolt来遍历整个db,解析json并检查字段。但这可能是你能采取的最糟糕的方法。
https://stackoverflow.com/questions/34973055
复制相似问题