2

我正试图围绕 Bleve 转转,我了解教程、视频和文档中发生的一切。然而,当我在 BoltDB 上使用它并且不知道如何开始时,我感到非常困惑。

假设我有一个名为 Person 的现有 BoltDB 数据库,data.db其中填充了结构类型 Person 的值

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

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

任何帮助将不胜感激。

4

2 回答 2

8

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

index.Index(person.ID, person)

index与您的应用程序数据分开存在(无论是在 Bolt、Postgres 等中)。

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

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

于 2016-01-24T20:53:15.093 回答
2

你如何索引你的数据取决于你想如何查询它。

如果您想通过任意字段进行查询,例如 {Age:15, Name:"Bob"} 那么 BoltDB 不适合您的问题。

BoltDB 只是一个键值存储,可以快速访问顺序键和高效的前缀查找。它并不是通用数据库的真正替代品。

您可能需要更像文档存储(即:MongoDB)或 RDBMS(即:PostgreSQL)的东西。

如果您只想要使用简单文件并嵌入的东西,您还可以将SQliteGo 模块一起使用

如果您只想按单个字段(如 ID 或名称)进行搜索,则将其用作键。

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

于 2016-01-24T17:45:57.557 回答