如何在android的firebase中执行快速搜索

jchrr9hc  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(358)

关闭。这个问题需要详细或明确。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,添加细节并澄清问题。

22小时前关门。
改进这个问题
我想在我的应用程序中添加搜索功能,我正在使用firebase,我是firebase的新手,因此,
我有recyclerview,我想根据用户输入显示搜索结果
我该怎么做?
我正在使用firestore,但我会使用搜索速度更快的

webghufk

webghufk1#

firestore没有本机全文搜索功能,因此您必须使用专用的第三方搜索服务,如algolia、elasticsearch等。然而,algolia有一个firebase扩展,它将在将文档添加到firestore后立即在algolia中索引您的文档。在幕后,此扩展将firestore触发器用于云函数,云函数在添加新文档时运行函数。
要安装扩展,请单击firebase控制台中的扩展选项卡,搜索该扩展(或访问此页面),然后单击 Install . 完成配置过程,您需要输入要索引的集合和一些algolia api键。一旦安装,它应该将配置集合中的所有新文档添加到algolia。
要在android应用程序中从algolia获取文档,请首先通过添加以下依赖项安装algolia的android客户端:

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 
  }
});

要搜索多个索引并运行facetsearch,可以参考algolia的文档以获得一些示例。

相关问题