unicloud 模糊查询解决方案

Posted 雪狼之夜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unicloud 模糊查询解决方案相关的知识,希望对你有一定的参考价值。

        1、whereaggregate的模糊搜索

        2、第一种是“你好”去匹配“你好啊大家”

        3、第二种是“家啊”去匹配“啊!你家呢” 只要有1个字匹配就匹配

        4、第三种是“家啊”去匹配“啊!你家呢” 必须有“家”又有“啊”才匹配”

        想看效果,大家可以自己搜下

看效果

                

        

一、where的模糊搜索

1、第一种你好”去匹配“你好啊大家”

        const db = uniCloud.database()
        const dbCmd = db.command
        
        let text=params.text;//用户文本输入的值
		let newSearch=await db.collection("news")
		.where(dbCmd.or( 
				
					title:new RegExp(text, 'g')
				,
				
					about:new RegExp(text, 'g')
				
			)
		)
		.get()

new RegExp(params.text, 'g') 那个g的意思 ==》JavaScript RegExp 对象 | 菜鸟教程

然后  uni-app的官方文档只是提了下==》uni-app官网

如果你数据库的一条数据是 ↓↓↓↓↓↓


    name:"你在哪里呀",
    about:"你说呢,当然是去你家"

2、第二种“家啊”去匹配“啊!你家呢” 只要有1个字匹配就匹配

然后你想用户输入“你家去”想匹配到这条数据,那就得把用户输入的“你家”拆分成  “你”“家”“去”,然后变成new RegExp("你|家|去", 'g')

来看下面到代码↓↓↓↓

        const db = uniCloud.database()
        const dbCmd = db.command
        let text=params.text;//用户文本输入的值
		text=text.split("").join("|")   // 这个结果是 ==>  "你|家|去|"
		let newSearch=await db.collection("news")
		.where(dbCmd.or(  //这个是“或”关系 相当于 =>  "if(a||b)的||" 这个备注是给没后端基础的小伙伴看的
				
					title:new RegExp(text, 'g')
				,
				
					about:new RegExp(text, 'g')
				
			)
		)
		.get()

3、第三种“家啊”去匹配“啊!你家呢” 必须有“家”又有“啊”才匹配”

如果是where就把match里面的直接放where里就可以了。没差的

        const db = uniCloud.database()
        const dbCmd = db.command
        let text=params.text;//用户文本输入的值
		let titleRegArr=[]
		let aboutRegArr=[]
		text.split("").forEach((v,i)=>
			titleRegArr.push( //会变成这样   [about: /家/gi,about: /啊/gi]
				title:new RegExp(v, 'ig')
			)
			aboutRegArr.push(
				about:new RegExp(v, 'ig')
			)
		)
		let newSearch=await db.collection("news")
		.aggregate() 
		.match(dbCmd.or(  
				
					title:dbCmd.and(titleRegArr)
				,
				
					about:dbCmd.and(aboutRegArr)
				
			)
		)

二、聚合查询的过滤

let newSearch=await db.collection("news")
		.aggregate()
		.match(dbCmd.or(  
				
					title:new RegExp(text, 'g')
				,
				
					about:new RegExp(text, 'g')
				
			)
		)
		.end()

Mybatis中模糊查询使用中文无法查询

解决Mybatis中模糊查询使用中文关键字无法查询

解决方法:

在mybatis中,采用模糊查询时,如果使用中文查询则无法查询出结果;采用英文则可以
解决方法:在sqlconfig.xml中:url的value值的后面加上?useUnicode=true&characterEncoding=UTF-8

以上是关于unicloud 模糊查询解决方案的主要内容,如果未能解决你的问题,请参考以下文章

uniCloud云函数——微信小程序登录凭证校验[code2Session](即:使用 code 换取 openid 和 session_key 等信息)解决方案

uniCloud初体验

uniapp之云开发uniCloud入门

unicloud数据聚合处理

小程序云开发转uniCloud阿里云

怎样在Winform内实现ComboBox模糊查询