0

各位大佬你们好:

在当前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("张三"));

)

诚请各位大佬帮忙指点指点,感激不尽!!

更改状态以发布