请教下mongo的模糊搜索中字段有特殊符号怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教下mongo的模糊搜索中字段有特殊符号怎么办相关的知识,希望对你有一定的参考价值。

求教,比如+ - $ % &

参考技术A mongodb中的待特殊字符的模糊查询需要转义下才能查到

(name: /wo*2hjf/ 查不到

name: /wo\*2hjf/ 查得到 )

let str=wo*2hjf;

let filter1=

name: new RegExp(str)

;

let filter2=

name: new RegExp(str.replace(/\*/g,'\\*'))

;

db.find(filter1)//查不到

db.find(filter2)//能查到
参考技术B 11月23日晚上,李佳芬首先通过视频向韩告白。

她表示看着丈夫日夜奔波难以休息,日渐消瘦的身躯,内心很心疼。李佳芬说,虽不喜欢韩重回Z坛,但相信韩是一位有能力的人物,若能当选高雄市长,也是能为高雄未来带来发展契机的人,在他们家庭名与利都不重要,期盼幸福、平实的生活。她认为能协助韩的地方有限:“我想跟你说,这场选战无论结果如何,你在我心目中是真正的英雄,不论结局为何,你在孩子心中永远是他们挚爱的父亲”。

随后,李佳芬登台,现身现场!韩此刻眼眶泛泪,李佳芬也感动哽咽!韩从口袋掏卫生纸递给妻子。

国瑜吾爱:

在我们家庭,名与利都不重要,我们期盼的是一个温馨、幸福而平实的生活。我想对你说,这场选战,无论结果为何,你在我心目中,已是真正的英雄,无论结局为何,你在孩子的心中,永远是他们挚爱的父亲。

模糊查询中输入通配符的问题

模糊查询中输入通配符的问题:

比如说在搜索框中输入‘%‘、‘_‘、‘/‘时会出错,因为这些特殊符号在sql语句查询的时候是有他特定的意义的,所有这里要对前台传过来的keyword搜索内容进行排除通配符处理,我是在工具类中写了一个方法代码如下:

/**
* 根据搜索特殊字符串
* @param id
* @return 取不到返回null
*/
public static String specialStr(String str)
Integer index=str.indexOf("%");
Integer index1=str.indexOf("_");
Integer index2=str.indexOf("\\");
StringBuffer stringBuffer = new StringBuffer(str);
if(index!=-1)
stringBuffer.insert(index, "\\");

if(index1!=-1)
stringBuffer.insert(index1, "\\");

if(index2!=-1)
stringBuffer.insert(index2, "\\");

return stringBuffer.toString();

然后在controller层导入该工具类,使用specialStr方法就ok了,代码如下:

String keyword = request.getParameter("keyword");
String keyword1 = "";
if (!"".equals(keyword) && keyword != null)
keyword1 = CommonUtils.specialStr(request.getParameter("keyword"));// 排除%等通配符

最后将keyword1作为搜索内容带到数据库中查询就行了。

以上是关于请教下mongo的模糊搜索中字段有特殊符号怎么办的主要内容,如果未能解决你的问题,请参考以下文章

mongodb 怎么对多个字段模糊查询

ES实现模糊搜索

mysql怎么实现全局的模糊搜索?

Lucene/kibana查询 语法

模糊查询(排除%等通配符并支持不连续关键字查询)

TestCase--搜索&查询模块