如果有一个名为' 加利福尼亚的字符串'在firestore数据库,我想从Android应用程序搜索' Cali '然后火柱应该让我回到加利福尼亚州。 我该怎么做?
在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")
但我需要一个像as,
这样的功能db.collection("cities").whereContain("name", "Cali")
应该返回包含' Cali'的完整字符串。子。
答案 0 :(得分:3)
不幸的是,Firestore中没有看起来像这样的查询:
db.collection("cities").whereContains("name", "Cali")
但对于小型数据集,有一种解决方法可以帮助您解决此问题,即通过查询数据库获取所有城市名称并使用contains()
方法,如下所示:
String str1 = document.getString("yourProperty");
String str2 = "Cali";
boolean b = str1.toLowerCase().contains(str2.toLowerCase());
如果您尝试打印b
的值,则会看到true
。但是上面的示例仅适用于小型数据集,它不适用于大型数据集,这是因为下载整个集合来搜索客户端的字段并不实用。在这种情况下,正如official documentation建议:
要启用Cloud Firestore数据的全文搜索,请使用Algolia等第三方搜索服务。
有关具体示例,请参阅此 post 的回答。