小程序搜索功能:雲開發搜索和(hé / huò)小程序雲開發模糊搜索,同時(shí)搜索多個(gè)字段 ... - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

小程序搜索功能:雲開發搜索和(hé / huò)小程序雲開發模糊搜索,同時(shí)搜索多個(gè)字段 ...

發表時(shí)間:2021-2-20

發布人(rén):融晨科技

浏覽次數:90

今天來(lái)給大(dà)家講講小程序的(de)搜索功能。我這(zhè)裏後台數據庫用的(de)是(shì)小程序雲開發的(de)雲數據庫。所以(yǐ)我們搜索的(de)時(shí)候就(jiù)要(yào / yāo)借助雲開發來(lái)實現。

一,需求

比如我這(zhè)裏有如下的(de)一些數據 

我們想實現如下搜索需求

  • 1,搜索标題(title)包含‘小石頭’的(de)數據
  • 2,搜索标題(title)或者描述(desc)包含‘小石頭’的(de)數據
  • 3,搜索标題(title)描述(desc)都包含‘小石頭’的(de)數據

我們知道(dào)數據庫查詢的(de)時(shí)候有個(gè)where語句,但是(shì)where語句是(shì)查詢某個(gè)字段全部包含你輸入的(de)内容時(shí)才可以(yǐ),所以(yǐ)單純用where語句來(lái)做搜索的(de)話,結果太單一。所以(yǐ)我們今天就(jiù)來(lái)學習下模糊搜索功能的(de)實現。我們以(yǐ)上(shàng)面三個(gè)需求爲(wéi / wèi)例,來(lái)一個(gè)個(gè)講解。


二,實現原理

我們做模糊搜索的(de)時(shí)候,其實就(jiù)是(shì)查詢某個(gè)字段裏是(shì)否包含我們的(de)搜索詞。而(ér)模糊搜索需要(yào / yāo)借助RegExp,來(lái)看看RegExp是(shì)什麽。

  • 再來(lái)看看官方示例

 

可能看官方示例會有點糊塗,那麽我們接下來(lái)就(jiù)結合具體代碼來(lái)給大(dà)家做下講解。


三,模糊搜索的(de)代碼實現

3-1,模糊搜索單個(gè)字段

  • 需求:搜索标題(title)包含‘小石頭’的(de)數據

代碼如下

   

查詢結果如下: 

以(yǐ)看到(dào)我們成功的(de)查詢到(dào)了(le/liǎo)标題裏包含‘小石頭的(de)數據’


3-2,模糊搜索多個(gè)字段(滿足一個(gè)即可)

  • 需求:搜索标題(title)或者描述(desc)包含‘小石頭’的(de)數據

由于(yú)我們要(yào / yāo)查詢多個(gè)字段,所以(yǐ)我們這(zhè)裏用到(dào)了(le/liǎo)command高級操作符裏的(de)or  

代碼如下: 

 

查詢結果:

   

我們來(lái)分析下這(zhè)兩條數據

  • 1,标題和(hé / huò)描述都包含‘小石頭’,符合
  • 2,雖然标題裏沒有‘小石頭’,但是(shì)描述裏有,所以(yǐ)也(yě)符合。
  • 3,title和(hé / huò)desc裏都沒有‘小石頭’,所以(yǐ)不(bù)符合。

3-3,模糊搜索多個(gè)字段(要(yào / yāo)同時(shí)滿足)

  • 需求:搜索标題(title)描述(desc)都包含‘小石頭’的(de)數據

由于(yú)我們要(yào / yāo)查詢多個(gè)字段,所以(yǐ)我們這(zhè)裏用到(dào)了(le/liǎo)command高級操作符裏的(de)and 

代碼如下:

  

查詢結果:

   

我們來(lái)分析下這(zhè)兩條數據

  • 1,标題和(hé / huò)描述都包含‘小石頭’,符合
  • 2,雖然desc裏沒有‘小石頭’,但是(shì)title裏沒有,所以(yǐ)也(yě)不(bù)符合。
  • 3,title和(hé / huò)desc裏都沒有‘小石頭’,所以(yǐ)也(yě)不(bù)符合。

四,源碼

爲(wéi / wèi)例方便大(dà)家使用,我把完整的(de)代碼貼到(dào)這(zhè)裏,後面大(dà)家使用時(shí),直接複制這(zhè)裏的(de)代碼,略微改造下就(jiù)可以(yǐ)了(le/liǎo)。

    //我這(zhè)裏簡單起見就(jiù)把搜索詞寫死,正常應該用戶輸入的(de)
    let searchKey = '小石頭'
    let db = wx.cloud.database()
    let _ = db.command

    db.collection('news')
      .where(_.or([
        {//标題
          title: db.RegExp({ //使用正則查詢,實現對搜索的(de)模糊查詢
            regexp: searchKey,
            options: 'i', //大(dà)小寫不(bù)區分
          }),
        },
        {//描述
          desc: db.RegExp({
            regexp: searchKey,
            options: 'i',
          }),
        }
      ])).get()
      .then(res => {
        console.log('查詢成功', res)
      })
      .catch(res => {
        console.log('查詢失敗', res)
      })

相關案例查看更多