目录

mongo实现全文检索,使用多字段进行模糊查询

目录

mongo实现全文检索,使用多字段进行模糊查询

1.公司要进行mongo实现全文检索,在mongo的官网可以看到mongo实现全文检索,链接:

2.进行测试,运行结果如图:

https://i-blog.csdnimg.cn/blog_migrate/cf9a66e5cff7fcba45a9e0d0ba3d23f6.png

3.我们的项目是中文的,建立stores的collection,数据准备如下:

https://i-blog.csdnimg.cn/blog_migrate/e37e53de7c9bce864765b01e5e4b4bcd.png

4.建立索引,然后搜索是否关键字,效果如下:

https://i-blog.csdnimg.cn/blog_migrate/750fc1446ca2537610311dd9a6d78744.png

5.总结:mongo的全文搜索并不支持中文的分词,或者是模糊查询,mongo的全文索引是根据英文的分词来搜索的

6.解决项目问题:

我们使用springboot来操作mongo数据库,使用多字段的模糊查询

public List<ParameterDefinition> searchParameter(String searchCondition) {
    Query query = new Query();
    Criteria criteria =new Criteria();
    criteria.orOperator(
            Criteria.where("name").regex("^.*"+searchCondition+".*$"),
            Criteria.where("usages").regex("^.*"+searchCondition+".*$"),
            Criteria.where("typeName").regex("^.*"+searchCondition+".*$"),
            Criteria.where("unit").regex("^.*"+searchCondition+".*$"),
            Criteria.where("comments").regex("^.*"+searchCondition+".*$")
    );
    query.addCriteria(criteria);
    return mongoTemplate.find(query,ParameterDefinition.class);
  }