首页 > 解决方案 > 我想检查我的用户输入是否包含一个子字符串,它是我的 firestore 数据库中的一个文档,这在 Java 中是否可行?(安卓工作室)

问题描述

在以下代码中,“问题”是由用户语音输入创建的字符串变量。这个问题与我的 firebase cloud firestore 中的文档 ID 进行了比较。

public void setAnswer(String question){
        FirebaseFirestore JLdatabase = FirebaseFirestore.getInstance();

        DocumentReference docRef = JLdatabase.collection("Products").document(question);
        docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if (document.exists()) {
                        textViewAnswer.setText(document.getString("location"));
                    } else {
                        textViewAnswer.setText("I can't help you with this yet");
                    }
                } else {
                    textViewAnswer.setText("Oeps. Something went wrong");
                }
            }
        });


如果 question 正好等于文档 ID,它会起作用,但大多数时候会说一些稍微不同的东西。现在我想检查问题中是否有一个单词/单词组合等于我的文档 ID 之一。这在Java中可能吗?我在网上找不到这样的东西。

如果有更好的方法来解决这样的问题。我想来这里!

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


我要做的是:

  1. 创建一个字段名称来存储您的文档 ID 之后的问题
  2. 将问题存储为数组。(意思是每个单词都是它自己的数组)
  3. 使用该函数执行firebase 查询array-contains
  4. 还记得我告诉你如何将你的问题存储为一个数组(例如 [“How”、“are”、“you])吗?好吧,因为 firebase 没有关于 SQL 的 LIKE 操作
  5. 执行查询后,您可以获取文档 ID 并将其传递给文档参考

推荐阅读