在Android上使用Firebase进行高级搜索

时间:2017-09-13 16:22:13

标签: android sqlite firebase database nosql

阅读完Firebase文档后,我了解到NoSql中的逻辑结构与SQlite完全不同。我可以用以下方式进行基本搜索:

docker login Warning: failed to get default registry endpoint from daemon (Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied). Using system default: https://index.docker.io/v1/ Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: csomethingr Password: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.30/auth: dial unix /var/run/docker.sock: connect: permission denied orderByChild()orderByKey()并使用orderByValue() startAt()endAt()进行过滤。

我正在构建一个类似于圣经的应用程序。应用项目要求有搜索过滤器,例如:

  • “以”开头“:ex: Exce 借出
  • “Containing”:ex:Ex che nt
  • “所有单词”:ex:耶稣相同
  • 确切的短语:例如:耶稣是相同的

Firebase实时数据库功能非常适合修复输入错误或缺少文本,一旦广播在所有设备上发生变化,这无疑是非常惊人的。

考虑图像:

See the structure of JSON in firebase

  1. 是否可以使用Firebase执行这些搜索过滤器?
  2. 使用Firebase自己的API构建这些过滤器的最佳方法是什么?
  3. 我是否必须将这些相同的过滤器与离线数据一起使用?

2 个答案:

答案 0 :(得分:0)

不,这是不可能的。不幸的是,Firebase没有提供你在帖子中描述的文本搜索机制,据我所知,没有其他数据库默认提供这样的内容。

答案 1 :(得分:0)

在Firebase中没有像LIKE查询等效的想法。您可以创建一个额外的节点,如下所示:

"common_queries": {
    "jesus": {
     "0": "awdawdn",
     "1": "oiefpowmfpowmf"
    },
    "eggcelent":{
     "0": "oiefpowmfpowmf"
    }
}

然后您可以查询尝试按键,结果是对其他节点的键的引用。

还有另一种选择,包括使用startAt()方法和endAt(),通过添加最后一个文本可搜索值,这里有一个great video

我认为Firebase是您工具带中的一个工具,在这种情况下,它不是最合适的工具。不要用圆锯钻孔,只需使用钻头。