Java 使用whereGreaterThanOrEqualTo在字符串中间查找子字符串
我正在使用firestore中的数据创建一个Java 使用whereGreaterThanOrEqualTo在字符串中间查找子字符串,java,android,google-cloud-firestore,Java,Android,Google Cloud Firestore,我正在使用firestore中的数据创建一个autoCompleteTextView 我的firestore云构建如下: 例如,我有两个用户名: UserName 1 = "he is ok, ben" UserName 2 = "ben is ok" 为了自动完成名称,我使用以下方法搜索云: db.collection( "Names" ) .whereGreaterThanOrEqualTo("User
autoCompleteTextView
我的firestore云构建如下:
例如,我有两个用户名:
UserName 1 = "he is ok, ben"
UserName 2 = "ben is ok"
为了自动完成名称,我使用以下方法搜索云:
db.collection( "Names" )
.whereGreaterThanOrEqualTo("UserName", s.toString() ).whereLessThanOrEqualTo( "UserName", s.toString() + "\uF7FF" ).get()
.addOnCompleteListener( new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
String name = document.getString( "UserName" );
names.add( name );
}
}
}
} );
db.collection(“名称”)
.whereGreaterThanOrEqualTo(“用户名”,s.toString())。whereLessThanOrEqualTo(“用户名”,s.toString()+“\uF7FF”)。get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
字符串名称=document.getString(“用户名”);
名称。添加(名称);
}
}
}
} );
现在,例如,如果我键入“be”
,上面的代码运行良好,并找到用户名2的结果(ben是ok
),但找不到第一个,因为用户名不是以ben开头的
只要“be”是子字符串,如何确保它找到任何用户名
我还尝试将数据更改为数组,其外观如下:
并执行whererraycontains
。同样,只有当我从数组中键入一个完整的单词时,这个解决方案才有效(例如,如果我写了be
我没有得到任何结果,并且只有当我写了ben
它才有效,因为ben是数组对象的完整部分)
有什么方法可以从字符串或数组中找到子字符串,无论它出现在句子的哪个位置?Firestore不提供子字符串查询,因为它们不能有效地扩展。Firestore不提供子字符串查询,因为它们不能有效地扩展。