我在使用AVOSCloud做一个属性匹配度查询的功能。目前设计的数据存储方式是将属性数组存储在AVObject的一个key中,每个AVObject包含不同的属性数组。然后使用whereKey:containedIn约束,传入条件数组,来查询包含或部分包含该条件数据的所有AVObject。
我需要将结果按照匹配度,也就是AVObject的属性数组中包含条件数据的多少,来排序。我现在是在本地计算匹配度并排序。但是我希望这种排序是在服务器查询的时候就排好了,因为结果可能大于1000个,按我的理解结果大于1000时查询会停止并返回结果对吗?此时根据结果在本地排序,则结果不是对比所有数据后得出的。我希望得到的结果是与所有的AVObject比较后得出的,并且匹配度高的排在前面,我只需要匹配度最高的前100项数据。
按照我目前的数据存储方式,请问有什么办法可以实现我的需求吗?
或者,我这种数据存储方式是不是有问题?对于我这种属性匹配度查询的场景,使用AVOSCloud是不是有更好更适于快速查询的数据组织方式?
推荐使用应用内搜索,这种文本相关性排序只能走搜索引擎
https://cn.avoscloud.com/docs/app_search_guide.html