前端实现全局搜索

ps:vue 中实现

1.js 部分

实现展示搜索结果

  computed:{
          lists(){
            const search = this.search.toLowerCase();
            if (search) {
              // filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
              return this.dormitory.filter(data => {
              
                return Object.keys(data).some(key => {
                
                  return String(data[key]).toLowerCase().indexOf(search) > -1
                })
              })
            }
            return this.dormitory
          }
        },
lists //展示list
dormitory //全数据

  // some() 方法用于检测数组中的元素是否满足指定条件;
  // some() 方法会依次执行数组的每个元素:
  // 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测;
  // 如果没有满足条件的元素,则返回false。

 // 注意: filter() 、 some()  不会对空数组进行检测。
 // 注意: filter() 、 some()  不会改变原始数组。

.toLowerCase()转换为小写

### 微信小程序与Java后端实现全局搜索功能 在微信小程序中,通过Java后端实现全局搜索功能是一个常见的需求。以下是关于该功能的具体实现方法。 #### 1. 前端部分:发送请求到后端 在微信小程序中,可以通过 `wx.request` 方法向后端发起HTTP请求并传递关键词参数。以下是一段示例代码: ```javascript // 小程序页面中的搜索函数 function search(keyword) { wx.request({ url: 'https://your-backend-url/search', // 替换为实际的后端接口地址 method: 'POST', data: { keyword }, // 发送关键词给后端 header: { 'content-type': 'application/json' // 设置请求头为JSON格式 }, success(res) { console.log('搜索结果:', res.data); // 处理返回的结果数据 }, fail(err) { console.error('搜索失败:', err); } }); } ``` 此代码片段展示了如何从前端调用后端API并将用户的输入作为查询条件传送给服务器[^1]。 #### 2. 后端部分:处理搜索逻辑 在Java后端中可以使用Spring Boot框架来构建RESTful API服务。下面提供了一个简单的例子说明如何创建一个用于执行全文检索的服务端点。 ##### (a) 定义Controller层 定义一个控制器类用来接受来自客户端的请求,并将其转发至Service层进行业务操作。 ```java @RestController @RequestMapping("/search") public class SearchController { @Autowired private SearchService searchService; @PostMapping("") public ResponseEntity<List<Map<String, Object>>> performSearch(@RequestBody String keyword){ List<Map<String, Object>> results = searchService.searchByKeyword(keyword); return new ResponseEntity<>(results, HttpStatus.OK); } } ``` 上述代码设置了一个名为 `/search` 的 POST 接口,它会接收 JSON 格式的 body 数据(即用户输入的关键字),然后调用 Service 层的方法完成具体的查找工作[^3]。 ##### (b) 实现Service层 接下来,在Service层编写具体的功能实现细节。这里假设我们有一个数据库表叫做 `items` 存储了所有的可被搜寻的信息条目。 ```java @Service public class SearchService { @Autowired private ItemRepository itemRepo; public List<Map<String, Object>> searchByKeyword(String keyword){ // 调用自定义SQL语句或JPA方法来进行模糊匹配查询 return itemRepo.findByKeyword("%"+keyword+"%"); } } ``` 在这个例子中,`findByKeyword()` 是 Repository 中的一个方法,可能需要手动配置以支持 LIKE 运算符或其他高级查询技术[^4]。 ##### (c) 配置Repository层 最后一步是在 JPA 或 MyBatis 等持久化工具上添加相应的 DAO 查询方法。 如果采用 Spring Data JPA,则可以直接利用其内置的支持动态生成 SQL 功能简化开发过程;如果是手写原生 SQL 则需注意防止 SQL 注入攻击等问题的发生。 ```java @Repository public interface ItemRepository extends JpaRepository<ItemEntity, Long>{ @Query(value="SELECT * FROM items WHERE name LIKE %?1%", nativeQuery=true) List<Map<String,Object>> findByKeyword(String pattern); } ``` 以上就是整个流程的大致描述——从小程序发出请求直到最终获取响应的过程都已涵盖进去。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值