如何在Firebase数据库中进行简单的stringsearch?
我想在我的应用程序中创build一个简单的search,但不能在interwebs上find任何关于它的东西,这比2014年更近。还有一个更好的方法。 有startAt和endAt函数,但它们不按预期工作,并区分大小写。 你们如何解决这个问题? 这个function在2016年如何还不存在?
在我的情况下,我能够通过以下方式部分实现SQL LIKE:
databaseReference.orderByChild('_searchLastName') .startAt(queryText) .endAt(queryText+"\uf8ff") .once("value")
查询中使用的字符是Unicode范围内非常高的代码点(这是一个专用区域[PUA]代码)。 因为它是Unicode中最常用的字符之后,所以查询匹配以queryText
开头的所有值。
这样,通过“Fre”search,我可以从数据库中获取具有“Fred,Freddy,Frey”的logging作为_searchLastName
属性中的值。
Firebase没有像内置search那样的优秀SQL。您可以按值/键sorting,也可以等于
https://firebase.google.com/docs/database/android/retrieve-data
你可以在上面的链接find例子。 这是Firebase的最新文档。
如果你正在寻找像search一样的SQL。 然后看看弹性search。 但是这会增加复杂性,因为你需要一个平台来把它放在上面。 为此,我可以推荐Heroku或者GoogleCloudServers
这是一篇关于使用弹性search进行高级search的博客文章https://firebase.googleblog.com/2014/01/queries-part-2-advanced-searches-with.html
我不知道这种方法的确定性,但使用Android上的firebase版本10.2.6,我可以做这样的事情:
firebaseDatabase.getReference("parent") .orderByChild("childNode") .startAt("[a-zA-Z0-9]*") .endAt(searchString)
它似乎有时运作良好