搜索插件实现热搜词,历史查询功能

2024-04-15 14:32

本文主要是介绍搜索插件实现热搜词,历史查询功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、wxSearchView插件介绍:

wxSearchView为一个改良后的微信搜索插件,即装即用。
下载链接:https://download.csdn.net/download/Tom870223050/16797921

使用步骤:

  1. 把文件包解压放在微信目录下,导入到设定的搜索页面中。
    导入语句如下:
@import "../../wxSearchView/wxSearchView.wxss";//导入wxss文件
var WxSearch = require('../../wxSearchView/wxSearchView.js');// 导入js文件
<include src="../../wxSearchView/wxSearchView.wxml" />//导入到wxml文件中
  1. 自定义js中主要的函数
var WxSearch = require('../../wxSearchView/wxSearchView.js');Page({data: {},onLoad: function () {// 2 搜索栏初始化var that = this;// 3.查询热搜词WxSearch.init(that,  // 本页面一个引用['机器学习', '人工智能', "图像处理", '计算机图形学', '技术美术'], // 热点搜索推荐,[]表示不使用[],// 搜索匹配,[]表示不使用that.mySearchFunction, // 提供一个搜索回调函数that.myGobackFunction //提供一个返回回调函数);},// 3 转发函数,固定部分,直接拷贝即可wxSearchInput: WxSearch.wxSearchInput,  // 输入变化时的操作wxSearchKeyTap: WxSearch.wxSearchKeyTap,  // 点击提示或者关键字、历史记录时的操作wxSearchDeleteAll: WxSearch.wxSearchDeleteAll, // 删除所有的历史记录wxSearchConfirm: WxSearch.wxSearchConfirm,  // 搜索函数wxSearchClear: WxSearch.wxSearchClear,  // 清空函数// 4 搜索回调函数  mySearchFunction: function (value) {// do your job here// 示例:跳转wx.redirectTo({url: '../index/index?isSaveRecord=1&search=' + value})},// 5 返回回调函数myGobackFunction: function () {// do your job here// 示例:返回wx.redirectTo({url: '../index/index'})}})

结果如图:
在这里插入图片描述

二、搜索组件缓存讲解

前期准备:对于用户信息(userInfo)如果使用全局变量,只能保存在app里面,我们关闭进程再打开的话就会丢失,对此我们保存在本地缓存上。其中setGlobalUserInfo为载入缓存方法,可以在用户登陆等需要将用户信息载入缓存的载入缓存中,getGlobalUserInfo为清理缓存方法,在注销用户信息等方法时用于清理缓存。

//app.js里面添加:setGlobalUserInfo:function(user) {wx.setStorageSync('userInfo', user);},getGlobalUserInfo:function(){return wx.getStorageSync('userInfo');}

1.热搜模块

(1)数据库设计

idcomment
搜索内容

(2)后台接口设计(以搜索视频为例)

  • 保存热搜词

video为视频对象,isSaveRecord为是否保存查询内容,如用户只是在搜索栏输入信息而没有搜索则值为0,

//VideoServiceImpl.java

public PagedResult getAllVideos(Videos video,Integer isSaveRecord){//保存热搜词String desc = video.getVideoDesc();if(isSaveRecord != null && isSaveRecord == 1){SearchRecords record = new SearchRecords();String recordId = sid.nextShort();record.setId(recordId);record.setContent(desc);searchRecordsMapper.insert(record);}
}

//VideosMapperCustom.xml

<select id="queryAllVideos" resultMap="BaseResultMap" parameterType="String">select v.*,u.face_image as face_image,u.nickname as nickname from videos vleft join users u on u.id = v.user_idwhere 1 = 1<if test=" videoDesc != null and videoDesc != '' ">and v.video_desc like '%${videoDesc}%'</if><if test=" userId != null and userId != '' ">and v.user_id = #{userId}</if>and v.status = 1order by v.create_time desc</select>
  • 查询显示热搜词
    //SearchRecordsMapper.xml
  <select id="getHotwords" resultType="String">  select content from search_records group by content order by count(content) desc</select>

//VideoServiceImpl.java

   public List<String> getHotwords() {return searchRecordsMapper.getHotWords();}

//searchVideo.js

  onLoad: function () {// 搜索栏初始化var that = this;// 查询热搜词var serverUrl = app.serverUrl;wx.request({url: serverUrl + '/video/hot',method: "POST",success: function(res) {console.log(res);var hotList = res.data.data;WxSearch.init(that,  // 本页面一个引用hotList,// ['美国', '日本', "印度", "中国", '计算机图形学', '技术美术'], // 热点搜索推荐,[]表示不使用hotList,// 搜索匹配,[]表示不使用that.mySearchFunction, // 提供一个搜索回调函数that.myGobackFunction //提供一个返回回调函数);}
  • 显示搜索结果

注意这里运用了分页来显示查询结果,相关类如下
public class PagedResult {

private int page;			// 当前页数
private int total;			// 总页数	
private long records;		// 总记录数
private List<?> rows;		// 每行显示的内容public int getPage() {return page;
}
public void setPage(int page) {this.page = page;
}
public int getTotal() {return total;
}
public void setTotal(int total) {this.total = total;
}
public long getRecords() {return records;
}
public void setRecords(long records) {this.records = records;
}
public List<?> getRows() {return rows;
}
public void setRows(List<?> rows) {this.rows = rows;
}

}

   @Transactional(propagation = Propagation.REQUIRED)@Overridepublic PagedResult getAllVideos(Videos video,Integer isSaveRecord,  Integer page, Integer pageSize) {//保存热搜词String desc = video.getVideoDesc();String userId = video.getUserId();if(isSaveRecord != null && isSaveRecord == 1){SearchRecords record = new SearchRecords();String recordId = sid.nextShort();record.setId(recordId);record.setContent(desc);searchRecordsMapper.insert(record);}PageHelper.startPage(page,pageSize);List<VideosVO> list = videosMapperCustom.queryAllVideos(desc,userId);PageInfo<VideosVO> pageList = new PageInfo<>(list);PagedResult pagedResult = new PagedResult();pagedResult.setPage(page);pagedResult.setTotal(pageList.getPages());pagedResult.setRows(list);pagedResult.setRecords(pageList.getTotal());return pagedResult;}

四、结果

这篇关于搜索插件实现热搜词,历史查询功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906073

相关文章

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima