我有一个 android 应用搜索功能,后端是PHP& MySQL的。
目前 on user keypress 我正在向服务器发送请求以获取数据。 (实时建议)。
每次按键我都会将用户输入插入服务器。
问题在一天结束时,要查看用户搜索内容的统计信息非常困难,因为有如下的冗余数据。
用户搜索: Apple
Mobile按以下键按将请求发送到服务器
答案 0 :(得分:0)
它可以帮助您将冗余数据保存在数据库中。 假设您最初在数据库中没有任何记录用于实时搜索。
让我们假设最终用户正在搜索术语“Apple 6s”。 现在让我们说他输入了关键字' A' 现在根据您当前的逻辑,您正在请求后端服务器将此术语保存在数据库中。
假设您的用户搜索字词保存表名称是" user_searches "截至目前。因此,默认情况下此表为空。当用户键入关键字' A '记录将在此表中插入 id(主键)1。
当用户输入关键字' p '再次请求将使用字符串' Ap。'发送到服务器。 您不是将其另存为新记录,而是更新已使用字符串' A '保存的上一条记录。 所以记录ID 1的新值是' Ap'
除非字符串中存在空格,否则您需要更新记录ID 1。因此,一旦收到字符串中的空格,就必须在id为2的数据库中插入新的或在我们的情况下的第二条记录。 因此,根据这个逻辑,如果用户输入的字符串为“Apple 6s'
,那么您将在数据库中拥有如下记录:id search_terms 1 Apple 2 6s
因此,无论何时在数据库中插入记录,您都必须在响应中发送记录的最新ID。
你必须考虑如果用户A正在搜索术语" Apple"那么最初这个用户的记录ID为1 同时,如果用户B也在搜索术语"诺基亚"然后它将有记录ID 2进行更新。 因此,您必须根据设备ID跟踪搜索字词。为此,您可以在user_searches表中再添加一列作为" deviceId"这样您就可以轻松跟踪各个设备的搜索字词。
希望这可以帮到你。