用户搜索策略移动开发

Posted

技术标签:

【中文标题】用户搜索策略移动开发【英文标题】:User Search Strategy Mobile Dev 【发布时间】:2021-12-31 05:54:32 【问题描述】:

我想在我的应用上实现一个搜索功能,它会根据输入到搜索栏中的每个新字符重新过滤,以便用户可以搜索其他用户。这是应用程序中相当常见的功能,但作为初学者,这似乎是一个非常复杂的计算过程。似乎会发生以下两种情况之一:

    对于输入的每个新字符,前端都会查询后端,后端会应用过滤器并返回。 前端会预先加载所有(或许多)可能的结果,并在输入新字符时根据存储的信息更新过滤器。

看起来 1) 会有时间复杂度问题,因为它每次搜索都会进行 O(n) 次查询(其中 n 是字符数)。这尤其成问题,因为预计过滤后的搜索结果几乎会立即更新。此外,我的平均查询时间可能比大多数人都慢,因为我使用的是三层架构(前端服务器图形数据库)

我不喜欢 2)——至少在其简单的形式中——因为可能的结果数量可能会变得非常大。我们可以通过仅查询一组有限的用户属性(可能只查询uid 和姓名,并在需要时即时获取详细信息)来降低空间复杂度,但重点仍然存在。

如果我们修改 2) 以仅加载用户样本,事情会变得更有趣(在这里我们可以使用位置等数据以及 ML/AI 进行选择)。这样做的问题是搜索用户可能总是在寻找我们没有选择的人。如果用户知道他们的朋友在应用上但无法找到他们,这将是一种可怕的(即使很少见)体验,因为我们的算法仅适用于 99% 的搜索。

我确信这是可能的——其他应用似乎可以做到——那么我错过了什么?

【问题讨论】:

【参考方案1】:

首先,您应该避免为每个键入的字符查询服务器。大多数情况下,用户在不查看建议结果的情况下非常快速地键入字符,尤其是因为字符很少,结果不够具体。所有的自动补全系统都采用以下两种:

仅当字符串长度至少为 2-3 个字符时才查询; 仅当用户没有输入更多内容时才查询,即在最后一次输入 300 毫秒后。

要在不传输大量数据的情况下获得所有相关结果,您可以实现渐进式数据加载。只需加载足够的结果以填充页面高度,然后随着用户向下滚动加载更多结果。但是,如果您获得大量结果,则应停止检索它们并要求用户键入更具体的搜索。

如果您想让您的用户满意,请尝试按相关性对结果进行排序。例如,如果您知道用户的位置,您可以按距离对结果进行排序,因为如果我住在意大利并且我搜索“Ste”,那么我的朋友更有可能是住在罗马的 Stefano,而不是住在纽约的 Steve .

【讨论】:

以上是关于用户搜索策略移动开发的主要内容,如果未能解决你的问题,请参考以下文章

移动端中的“加载策略”思考与总结

Joomla Extension根据搜索的关键字提供个性化内容

移动应用市场统计分析

百度移动端项目敏捷开发实践

移动端H5页面编辑器开发实战--经验技巧篇

移动端H5页面编辑器开发实战--经验技巧篇