我有很多对象。每个对象都与许多键值对相关联。键是任意字符串(不同对象的键可能不同,并且没有可能键的完整列表),值可以是数字、字符串、日期时间等。
我需要使用复杂的搜索查询来搜索这个集合。在最简单的实现中,用户必须能够指定感兴趣的键列表和每个键值的条件,例如
key1: not present
key2: present
key3: == "value3"
key4: < 42
key5: contains "value5"
引擎必须找到满足所有条件的所有对象(即条件是“与”)。在完美的实现中,用户可以使用某种查询语言来指定条件,例如
key1 = "value1" AND (key2 < 3 OR key3 < 3)
我在 Windows 上使用 C++ 和 Qt(Linux 支持不是必需的,但很好)。我不想使用需要一些安装(尤其是具有管理员权限)的数据库,我希望解决方案是可移植的。
请提出一种从头开始实现此功能的好方法,或者使用任何满足我需求的库或数据库。
更新:问题是关于在磁盘上存储大量数据并快速搜索它。也许它也与解析和处理搜索查询有关。这与我需要用来表示内存中数据的数据结构无关。这很简单。