这个问题不是一个特定于语言的问题,它是某种与模式相关的问题,但我想用一些我能理解的流行语言来标记它。
我对将数据与搜索数据(尤其是移动环境)结合使用有效加载的要求不太熟悉。
之前使用的策略是将所有内容加载到本地内存中并从那里搜索(例如在C#中使用LINQ)。
每次执行新搜索时,还有一个策略是重新加载数据。做这样的事情当然不高效,我们也可能需要做一些更复杂的事情来将新加载的数据与现有数据(已经加载到本地存储器)同步。
我能想到的最后一个策略是最难实现的策略,即懒惰地将数据与搜索执行一起加载。也就是说,执行搜索时,返回结果应该在本地缓存。在从服务/服务器获取新结果之前,搜索应首先查看本地内存。因此,每次搜索的结果都是本地搜索和服务器搜索的组合。这里的目的是减少每次运行搜索时从服务器重新加载的数据量。
以下是我能想到的实施这种策略的方法:
我不确定这是否是正确的方法,但我感觉不太好的是在第2步。因为我们需要将步骤1中找到的项目ID列表发送到服务器,所以如果我们有数百或数千个这样的ID,那么在这种情况下将它们发送到服务器可能效率不高。此外,排除如此大量项目的查询可能也不高效(即使使用直接SQL或LINQ)。我现在仍然感到困惑。
最后,如果您对某个生产项目有任何更好的想法和重要的实施,请与我分享。我不需要任何具体的示例代码,我只需要一些想法,实现的步骤(就像我上面描述我的想法一样)。非常感谢你的帮助。
答案 0 :(得分:1)
我会通过认为本地和远程是两个不同的数据源来解决问题,
触发搜索时,将针对两个数据源(本地 - 内存和服务器)启动搜索
最有可能是本地搜索会先生成结果,因此请将其显示给用户。
从服务器返回结果时,您可以追加非重复结果。
可选 - 如果服务器数据已更改且某些结果已删除/或更改,请更新/删除本地结果并更新视图。