Firestore-orderBy最佳匹配包含任何查询

问题描述

我在Firestore中有一个文档集合,该文档的一个字段是一个字符串数组,这些标签添加到数据中。

用户可以通过在前端选择和取消选择这些标签来过滤数据,因此我正在做一个数组包含任何内容查询Firestore。

然后,我对最佳匹配结果进行评分,因此将与更多标签匹配的文档排在最前面,并显示用户页面的顶部。

我现在正尝试使用startAfter将文档快照作为游标和限制来对这些数据进行分页。但是,当限制未按认顺序扩展到该文档(按ID升序)时,我需要确保不排除评分较高的文档。我没有按任何特定方式对结果集进行排序。

我的问题是,有没有办法以这种方式查询Firestore,使其可以按数组中包含的任何查询中匹配的最多标签查询结果进行排序,否则,如何更改我的数据模型/逻辑将以可扩展的方式做到这一点。

查询整个数据集并自己执行分页似乎不是最实用的解决方案。

解决方法

我的问题是,有什么方法可以查询Firestore,从而可以按数组中包含的任何查询中匹配的最多标签对查询结果进行排序

否,Firestore无法根据列表字段的大小对查询结果进行排序。

我如何更改数据模型/逻辑以实现可扩展的方式。

您可以将列表的大小存储在另一个字段中,然后使用该字段进行排序。如果列表更改,则必须确保该字段为最新。