删除相同的先前记录" KeyWord"图案

时间:2016-01-22 09:07:34

标签: php android mysql

我有一个 android 应用搜索功能,后端是PHP& MySQL的。

目前 on user keypress 我正在向服务器发送请求以获取数据。 (实时建议)。

每次按键我都会将用户输入插入服务器。

问题在一天结束时,要查看用户搜索内容的统计信息非常困难,因为有如下的冗余数据。

用户搜索: Apple Mobile按以下键按将请求发送到服务器

  1. A
  2. 应用
  3. 申请
  4. Apple
  5. 问题是:如何从mysql [1到4] 中删除记录并仅保留 [5]

    注意:在移动应用程序中保持相同的实时搜索(按键按下)功能。

    enter image description here

    其他说明: 应用正在使用 REST API 通过 HTTP POST 发送数据 每次有1000个用户可以搜索该应用。 [上一个上一条记录可能并不总是同一查询的一部分]

1 个答案:

答案 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"这样您就可以轻松跟踪各个设备的搜索字词。

希望这可以帮到你。