搜索 HDF5 数据集

标签 search hdf5

我正在探索 HDF5 .我已经阅读了“Evaluating HDF5”线程中有趣的评论,我知道 HDF5 是存储数据的首选解决方案,但您如何查询它?例如,假设我有一个包含一些标识符的大文件:有没有办法快速知道文件中是否存在给定的标识符?

最佳答案

我认为答案是“不直接”。

以下是我认为您可以实现该功能的一些方法。

使用组:

可以以 Radix Tree 的形式使用组的层次结构。来存储数据。不过,这可能不会很好地扩展。

使用索引数据集:

HDF 有一个引用类型,可用于从单独的索引表链接到主表。写入主数据后,可以使用其他带有引用的键排序的其他数据集。例如:

MainDataset (sorted on identifier)
0: { A, "C", 2 }
1: { B, "B", 1 }
2: { C, "A", 3 }

StringIndex
0: { "A", Reference ("MainDataset", 2) }
1: { "B", Reference ("MainDataset", 1) }
2: { "C", Reference ("MainDataset", 0) }

IntIndex
0: { 1, Reference ("MainDataset", 1) }
1: { 2, Reference ("MainDataset", 0) }
2: { 3, Reference ("MainDataset", 2) }

为了使用上述内容,在索引表中查找字段时必须编写二进制搜索。

内存索引:

根据数据集的大小,使用诸如“boost::serialize”之类的东西读取/写入其自己的数据集的内存索引可能同样容易。

HDF5-FastQuery:

paper (还有这个 page )描述了使用位图索引对 HDF 数据集执行复杂查询。我没有试过这个。

关于搜索 HDF5 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686869/

相关文章:

search - Elasticsearch - search_analyzer 与 index_analyzer

pdf - 如何在MSSQL Server 2017中使用Adobe iFilter 11

python - 如何在 python 中将大型 csv 文件写入 hdf5?

hdf5 - HDF 是否进行字符串实习?

c++ - 具有异构行的数据包表

elasticsearch - 使用Apache Lucene进行 bool 查询的结果编号

search - 将数据从 solr 迁移到 elasticsearch

java - 二进制搜索不适用于 double

c++ - 如何读取存储在 HDF5 中的 ArrayType 的一个组件

macos - OS X 运行时链接器发现错误的 lib 版本