如何在android的firebase中执行快速搜索[关闭]

Posted

技术标签:

【中文标题】如何在android的firebase中执行快速搜索[关闭]【英文标题】:How to perform fast search in firebase in android [closed] 【发布时间】:2021-10-02 02:19:08 【问题描述】:

我想在我的应用中添加搜索功能并且我正在使用 Firebase 我是 Firebase 的新手,所以,

我有 RecyclerView 我想根据用户输入显示搜索结果

我该怎么做?

好吧,我正在使用 firestore,但我会使用搜索速度更快的那个

【问题讨论】:

您使用的是 Firebase 实时数据库还是 Firestore?如果您指的是全文搜索,那么您将不得不使用一些 3rd 方服务,例如 Algolia。 Algolia 有一个 Firebase extension。 好吧,我使用的是firestore,但我会使用搜索速度更快的那个 Firestore 没有内置的原生全文搜索或类似功能,因此您可以使用我在第一条评论中提到的扩展在 Algolia 中为您的文档编制索引,然后使用 Algolia android Client 从中搜索文档。 我该怎么做,请给我一些提示或sinppets 好的,我来解释一下 【参考方案1】:

Firestore 没有本地全文搜索功能,因此您必须使用专门的第三方搜索服务,例如 Algolia、ElasticSearch 等。但是,有一个 Firebase extension for Algolia 会在您的文档被搜索后立即在 Algolia 中建立索引添加到 Firestore。在幕后,此扩展使用 Firestore Triggers 用于云函数,该函数在添加新文档时运行一个函数。

要安装扩展程序,请单击 Firebase 控制台中的扩展程序选项卡并搜索该扩展程序(或访问 this page),然后单击 Install。完成配置过程,您需要输入要索引的集合和一些 Algolia API 密钥。安装后,它应该将您配置的集合中的所有新文档添加到 Algolia。

要在您的 Android 应用中从 Algolia 获取文档,首先通过添加以下依赖项来安装 Algolia 的 Android Client:

dependencies 
    // [...]
    implementation 'com.algolia:algoliasearch-android:3.+'
    // This will automatically update to the latest v3 release when you build your project


然后初始化SDK如下:

Client client = new Client("AlgoliaAppKey", "AdminAPIKey");
Index index = client.getIndex("your_index_name");

// your_index_name is specified by your while configuring the extension

然后要在特定索引中搜索文档,您可以像这样使用 Algolia 客户端:

Index index = client.getIndex("your_index_name");
Query query = new Query("query string that you want to search")
  .setAttributesToRetrieve("firstname", "lastname")
  .setHitsPerPage(50);
index.searchAsync(query, new CompletionHandler() 
  @Override
  public void requestCompleted(JSONObject content, AlgoliaException error) 
    // [...]
    // Add content to your RecyclerView 
  
);

要搜索多个索引并运行分面搜索,您可以参考 Algolia 的 documentation 获取一些示例。

【讨论】:

以上是关于如何在android的firebase中执行快速搜索[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何绕过 Firebase 缓存来刷新数据(在 Android 应用中)?

Firebase(FCM)如何获取令牌

事件发生一分钟后如何执行firebase云功能?

Android使用Firebase

如何快速刷新 Firebase 推送通知

我们如何在 firebase(android、kotlin)中记录错误?