首页 » PHP » 总结:小程序的搜索功能

总结:小程序的搜索功能

 

又一个发现一个bug,已修复

下午把小程序(书架)的搜索功能做完了,所有功能中最复杂的一个。所以就想整理下来,顺便再理一下思路,检查有没有 bug。(写到一半发现果然有 bug 。。。)

以前写作业时做过搜索功能,但毕竟是作业,只要实现最基础的就可以了(SELECT  *  FROM  table  WHERE  keyword  LIKE  "%post_keyword%"),而对要上线的程序可不能就这么简单搜索,下面就说一下我做的搜索功能的逻辑。

(前提:书的数据全部来源于豆瓣;因为豆瓣数据接口次数限制,需要尽量减少调用次数)

搜索的过程

  1. 用户从文本框输入关键词,点击搜索
  2. 提交用户关键词、用户 cookie、搜索操作到后台
  3. 后台判断为搜索操作,调用搜索方法
  4. 首先从本地数据库进行搜索,如果搜索结果不为空,则设置相应的关键词到热搜关键词表,返回数据给客户端
  5. 如果搜索结果为空,则调用豆瓣接口进行搜索,如果调用出错,则设置相应的错误码
  6. 如果豆瓣接口成功返回数据,则进行遍历
  7. 遍历时再通过 isbn 对本地数据库进行搜索,如果本地数据库中存在此条数据,则使用数据库中的记录,跳过豆瓣接口的记录(因为自己的搜索本地数据库算法很简单,无法跟豆瓣的相比,所以同一个关键词在豆瓣能搜到的可能在本地数据库搜不出来)
  8. 如果本地数据库不存在,则对数据进行过滤,并把数据拼接到 SQL 中(需要把本地数据库不存在的数据插入到数据库中)
  9. 遍历结束执行插入数据库操作,如果没插入成功返回错误码
  10. 如果插入成功则返回结果集给客户端,并设置结果类型为豆瓣接口搜索的结果
  11. 前台接收到返回值后,首先判断错误码,如果出错则页面显示相应的错误信息
  12. 如果成功接收的结果集,则把结果集渲染到页面上
  13. 判断结果类型是否为豆瓣的结果,如果不是,则显示“更多”按钮(减少豆瓣接口调用次数)
  14. 用户点击“更多”按钮,把关键词、已经搜索出的书籍的 isbn 、用户 cookie 提交到后台
  15. 后台执行“获取更多”操作,调用豆瓣接口
  16. 判断调用接口是否调用成功,不成功则返回错误码
  17. 调用成功后遍历结果集,去掉点击“更多”按钮前搜索到的记录,去掉数据库已经存在的记录
  18.  同 7 ~ 12
  19. 隐藏“更多”按钮

以上就是我写的搜索算法,很多都是我在一次次的报错中才知道需要考虑这种情况,实践出真知。

PS:

  1. 小程序已经比预计完成的时间晚了一个月了...
  2. 闪念胶囊是神器,夸一万次都不够,如果没有闪念胶囊,完成时间会更晚。
  3. 期待老罗515改变世界,朱海舟说有比闪念胶囊好十倍的创新。

 

附源码:

搜索方法

搜索更多方法

 

 

原文链接:总结:小程序的搜索功能,转载请注明来源!

7