2017-09-13 27 views
0

阅读Firebase文档后,我了解到NoSql中的逻辑结构与SQlite完全不同。我可以做有序的基本搜索:使用Android上的Firebase进行高级搜索

orderByChild()orderByKey()orderByValue() startAt()endAt()equalTo()过滤。

我正在构建一个类似于圣经的应用程序。该应用程序项目要求有搜索过滤器,如:

  • “以启动”:例如:EXCE借给
  • “含有”:前:前 NT
  • “所有词“:例如:耶稣相同
  • 精确搜索:例如:耶稣是一样的

Firebase实时数据库功能非常适用于修复打字错误或丢失文本,一旦广播在所有设备上发生变化,这无疑是非常惊人的事情。

考虑到图像:

See the structure of JSON in firebase

  1. 是否有可能做火力地堡这些搜索过滤器?
  2. 使用Firebase自己的API构建这些过滤器的最佳方式是什么?
  3. 我是否必须将这些相同的过滤器与脱机数据一起使用?
+0

这是不可能的。我认为有限的解决方法。 – creativecreatorormaybenot

+0

Firebase实时数据库没有您描述的文本搜索。 –

+0

有没有其他的数据库,当更改或添加数据时,它会进行广播,在所有设备上更改?什么是最好的选择? –

回答

0

在Firebase中没有这样的想法与LIKE查询等效。你可以创建一个额外的节点是这样的:

"common_queries": { 
    "jesus": { 
    "0": "awdawdn", 
    "1": "oiefpowmfpowmf" 
    }, 
    "eggcelent":{ 
    "0": "oiefpowmfpowmf" 
    } 
} 

然后你就可以查询试图击中的关键,其结果是参考其他节点的密钥。

还有另外一种选择至极涉及使用startAt()方法和endAt(),加上最后一个文本搜索的价值,这里是一个great video

我觉得火力地堡是你的工具区中的一个工具,在这种情况下,是不是最合适的工具。不要用圆锯钻孔,只需使用钻头。

+1

使用你的提示,它的工作。我能够通过带来一本书的所有段落并使用Array来进行查询。谢谢! –

+0

@OséiasRibeiro太棒了! Wich提示,视频或“common_queries”节点? – cutiko

+0

paragrafos ----> UHIudiuhiUHRI10 ----> texto:“valor”banco de dados = FirebaseDatabase.getInstance(); reference = database.getReference(“paragrafos”); Consulta de consulta = reference.orderByChild(“id”)。 EqualTo(msgId); –

0

不,这是不可能的。不幸的是,Firebase没有像您在文章中描述的那样提供文本搜索机制,并且据我所知,没有其他数据库在默认情况下提供类似的内容。

+0

谢谢!有效。 –