各位大佬你们好:
在当前Java项目中,使用mongodb作为数据库,在实现模糊查询的方法时,遇到了难题,请大佬们指点迷津.
因为不能使用通配符”/中文/”和正则表达式regex的方式去实现模糊查询,要求在mongo集合建立文本索引,通过全文搜索实现模糊查询的效果
但是实际测试模糊查询效果:
比如根据名字进行模糊搜索:
db.record.find({$text: { $search: “张三”}})
当输入完整名称:”张三”,”李四”时可以搜索出结果,
db.record.find({$text: { $search: “张”}})
当输入不完整的名称:”张”,”三”,”李”,”四”时无法搜索出结果,这种情况是不符合模糊搜索的要求的.
我知道$text将使用空格和大多数标点符号作为分隔符来标记搜索字符串,因此会出现上述的问题.
那么,我该如何设计或修改这个文本索引,才能在Java项目中真正有效的实现模糊查询功能,并且保证高效性
Java代码又是如何书写的呢?
(目前使用的
Query query = new Query(); TextCriteria criteria = TextCriteria.forDefaultLanguage().matching("张三"); query.addCriteria(criteria); List<Record> records = mongoTemplate.find(query,Record.class);
)
(不知道用哪种
TextCriteria criteria = TextCriteria.forDefaultLanguage().matching("张三");
Query query = TextQuery.queryText(new TextCriteria().matchingAny("张三"));
)
诚请各位大佬帮忙指点指点,感激不尽!!
Mr.Mongo 更改状态以发布