Firebase查询 – 查找包含string的子项

我在Firebase查询中遇到了一些问题。 我想查询的对象,其中对象的孩子值包含一个特定的string。 到目前为止,我有这样的东西:

Firebase *ref = [[Firebase alloc] initWithUrl:@"https://dinosaur-facts.firebaseio.com/dinosaurs"]; [[[[ref queryOrderedByKey] queryStartingAtValue:@"b"] queryEndingAtValue:@"b~"] observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) { NSLog(@"%@", snapshot.key); }]; 

但是,这只给出具有“b”的起始值的对象。 我想要包含string“b”的对象。 我怎么做?

查询API中没有包含或模糊匹配方法,如果您已经扫描API和查询指南,则可能已经猜到了 。

不仅在SO [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ]上讨论了这个问题,而且我多次提到为什么要使用一个真正的search引擎 ,而不是尝试这种半心半意的search方法。

有一个原因,谷歌网站往往更容易find结果,而不是使用内置search,这是该失败的主要组成部分。

综上所述,对于如何手动执行此操作的问题的答案,由于没有内置的包含,因此需要设置一个服务器端进程,将数据加载/stream入内存,并手动search内容,最好用某种caching。

但说实话,ElasticSearch更快,更简单,而且效率更高。 由于这是一个很大的话题,我会推迟到这个主题的博客文章 。