Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有没有办法在Firestore中搜索子字符串?_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Android 有没有办法在Firestore中搜索子字符串?

Android 有没有办法在Firestore中搜索子字符串?,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,如果firestore数据库中有一个名为“California”的字符串,并且我想从android应用程序中搜索“Cali”,那么firebase应该返回我California。 我该如何进行查询 firestore有一些功能,比如 db.collection("cities").whereEqualTo("name", "Cali") db.collection("cities").whereLessThan("name", "Cali") db.collection("cities").

如果firestore数据库中有一个名为“California”的字符串,并且我想从android应用程序中搜索“Cali”,那么firebase应该返回我California。 我该如何进行查询

firestore有一些功能,比如

db.collection("cities").whereEqualTo("name", "Cali")
 db.collection("cities").whereLessThan("name", "Cali")
 db.collection("cities").whereGreaterThanOrEqualTo("name", "Cali")
 db.collection("cities").whereGreaterThan("name", "Cali")
 db.collection("cities").whereGreaterThanOrEqualTo("name", "Cali")
但我需要一个函数,比如

db.collection("cities").whereContain("name", "Cali")

它应该返回包含“Cali”子字符串的完整字符串

不幸的是,Firestore中没有这样的查询:

db.collection("cities").whereContains("name", "Cali")
String str1 = document.getString("yourProperty");
String str2 = "Cali";
boolean b = str1.toLowerCase().contains(str2.toLowerCase());
但对于小型数据集,有一种解决方法可以帮助您解决这一问题,即通过查询数据库获取所有城市名称,并使用
contains()
方法如下:

db.collection("cities").whereContains("name", "Cali")
String str1 = document.getString("yourProperty");
String str2 = "Cali";
boolean b = str1.toLowerCase().contains(str2.toLowerCase());
如果您尝试打印
b
的值,您将看到这是
true
。但上述示例仅适用于小型数据集,而不适用于大型数据集,这是因为下载整个集合以在客户端搜索字段是不切实际的。在这种情况下,正如委员会建议的那样:

要启用对云Firestore数据的全文搜索,请使用第三方搜索服务,如


关于一个具体的例子,请参见我的回答,我的回答是

您认为我的回答有用吗?虽然这是一个解决方案,但从技术上讲,它并不能回答让Firestore查询起作用的问题。另外,您提供的一些信息在技术上是不正确的;在Android Cloud Firestore API中,方法
whereEqualTo
和其他方法确实存在。@williechalmersii你好,Willie,感谢您对我的答案发表评论。是的,你说得对,我只是相应地更新了我的答案。@Williechalmersii希望你重新考虑我更新的答案,收回否决票。如果您认为我的回答可以帮助未来的访问者,请考虑投票表决。我会很感激的。谢谢