小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段

今天来给你们讲讲小程序的搜索功能。我这里后台数据库用的是小程序云开发的云数据库。因此咱们搜索的时候就要借助云开发来实现。html

一,需求

好比我这里有以下的一些数据
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段数据库

咱们想实现以下搜索需求小程序

  • 1,搜索标题(title)包含‘小石头’的数据
  • 2,搜索标题(title)或者描述(desc)包含‘小石头’的数据
  • 3,搜索标题(title)描述(desc)都包含‘小石头’的数据

咱们知道数据库查询的时候有个where语句,可是where语句是查询某个字段所有包含你输入的内容时才能够,因此单纯用where语句来作搜索的话,结果太单一。因此咱们今天就来学习下模糊搜索功能的实现。咱们以上面三个需求为例,来一个个讲解。api

二,实现原理

咱们作模糊搜索的时候,其实就是查询某个字段里是否包含咱们的搜索词。而模糊搜索须要借助RegExp,来看看RegExp是什么。
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/Database.RegExp.htmlide

  • 再来看看官方示例
    小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
    可能看官方示例会有点糊涂,那么咱们接下来就结合具体代码来给你们作下讲解。

三,模糊搜索的代码实现

3-1,模糊搜索单个字段

  • 需求:搜索标题(title)包含‘小石头’的数据

代码以下
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
查询结果以下:
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
能够看到咱们成功的查询到了标题里包含‘小石头的数据’学习

3-2,模糊搜索多个字段(知足一个便可)

  • 需求:搜索标题(title)或者描述(desc)包含‘小石头’的数据

因为咱们要查询多个字段,因此咱们这里用到了command高级操做符里的or
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
代码以下:
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
查询结果:
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
咱们来分析下这两条数据3d

  • 1,标题和描述都包含‘小石头’,符合
  • 2,虽然标题里没有‘小石头’,可是描述里有,因此也符合。
  • 3,title和desc里都没有‘小石头’,因此不符合。
    小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段

3-3,模糊搜索多个字段(要同时知足)

  • 需求:搜索标题(title)描述(desc)都包含‘小石头’的数据

因为咱们要查询多个字段,因此咱们这里用到了command高级操做符里的and
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段code

代码以下:
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段regexp

查询结果:
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
咱们来分析下这两条数据视频

  • 1,标题和描述都包含‘小石头’,符合
  • 2,虽然desc里没有‘小石头’,可是title里没有,因此也不符合。
  • 3,title和desc里都没有‘小石头’,因此也不符合。
    小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段

    四,源码

    为例方便你们使用,我把完整的代码贴到这里,后面你们使用时,直接复制这里的代码,略微改造下就能够了。

    //我这里简单起见就把搜索词写死,正常应该用户输入的
    let searchKey = '小石头'
    let db = wx.cloud.database()
    let _ = db.command
    
    db.collection('news')
      .where(_.or([
        {//标题
          title: db.RegExp({ //使用正则查询,实现对搜索的模糊查询
            regexp: searchKey,
            options: 'i', //大小写不区分
          }),
        },
        {//描述
          desc: db.RegExp({
            regexp: searchKey,
            options: 'i',
          }),
        }
      ])).get()
      .then(res => {
        console.log('查询成功', res)
      })
      .catch(res => {
        console.log('查询失败', res)
      })

到这里就讲完了,我后面会专门在云开发入门的课程里做为实战案例录制视频给到你们的:
《小程序云开发入门视频》

相关文章
相关标签/搜索