Android 我保存的关键字列表中的Firebase DB查询

Android 我保存的关键字列表中的Firebase DB查询,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,在我的android应用程序中,我将产品列表存储在此结构中。但我需要检查关键字是否包含我搜索的文本。我正在使用这个查询 Query query= FirebaseDatabase.getInstance().getReference(productList) .orderByChild("keywords").startAt("bag").endAt("bag\uf8ff"); 但它不起作用,请在这一部分帮助我。否则,请说一个正确的结构来保存我的应用程序FirebaseDB中的关键字。Fi

在我的android应用程序中,我将产品列表存储在此结构中。但我需要检查关键字是否包含我搜索的文本。我正在使用这个查询

Query query= FirebaseDatabase.getInstance().getReference(productList)
  .orderByChild("keywords").startAt("bag").endAt("bag\uf8ff");

但它不起作用,请在这一部分帮助我。否则,请说一个正确的结构来保存我的应用程序FirebaseDB中的关键字。

Firebase实时数据库不能很好地与您想要的内容匹配。更确切地说,一种更好的结构化方法是为每个产品提供一个关键字列表,而不是将其存储在逗号分隔的字符串中

"productList":
{
    "id1":
    {
        "keywords":
        {
            "bag": true,
            "bang": true
        },
        ...
    }
}
这种结构将在中进一步解释。然后它使查询变得更好。然后,您可以执行以下操作来查找具有该关键字的产品

Query query = FirebaseDatabase.getInstance().getReference(productList).orderByChild("keywords/bag").startAt("");

我尝试使用此数据库结构,将关键字存储在HashMapString中,布尔值。但此查询仅返回空值。@MariP是否将关键字节点重命名为关键字?你能用firebase数据库的导出更新这个问题吗?这样我就可以看到确切的结构了?@毒物发现..是的,我重命名了我的节点关键字,并将字符串列表保存在Hashmap中。但该查询仍然只返回空值。@MariP我刚刚查看了你的json。如果您查看我的答案中的链接,它表明您不应该对类似列表的结构中的值使用false。相反,只是不包括它。查询没有结果的原因是,关键字listFirebase中没有任何带有bag:true的项,因此无法有效地查询集合/数组中是否存在子项。请看我的答案:。如果你在这方面有困难,请与他人分享。这将包括你的实际JSON的一个片段,你可以通过点击你的页面中的导出JSON链接来获取。你好,弗兰克,我也添加了我的JSON snipp。请帮助我,弗兰克,在你的指导和毒药心智帮助下,它起作用了。我实现了我所期望的……非常感谢。感谢@毒物管理员在我不在时的帮助!