Java 弹簧数据+;Mongo案例不敏感文本搜索
我试图使用spring数据存储库在mongodb中的几个字段上实现不区分大小写的文本搜索。我找到了两种解决方案,每种都有两个缺点:Java 弹簧数据+;Mongo案例不敏感文本搜索,java,mongodb,spring-data,spring-data-mongodb,Java,Mongodb,Spring Data,Spring Data Mongodb,我试图使用spring数据存储库在mongodb中的几个字段上实现不区分大小写的文本搜索。我找到了两种解决方案,每种都有两个缺点: 使用正则表达式: @Query("{'status': 'ACTIVE', $or: [{'title': {$regex : ?0, $options: 'i'}}, {'location.text': {$regex : ?0, $options: 'i'}}]}") Page<Article> findAllActiveBySearchString
@Query("{'status': 'ACTIVE', $or: [{'title': {$regex : ?0, $options: 'i'}}, {'location.text': {$regex : ?0, $options: 'i'}}]}")
Page<Article> findAllActiveBySearchString(String search, Pageable pageable);
@Query(“{'status':'ACTIVE',$or:[{'title':{$regex:?0,$options:'i'}},{'location.text':{$regex:?0,$options:'i'}]}”)
PageFindAllActiveBysearchString(字符串搜索,可分页);
@Query("{'status': 'ACTIVE', $text: {$search: ?0}}")
Page<Article> findAllActiveBySearchString(String search, Pageable pageable);
@Query(“{'status':'ACTIVE',$text:{$search:?0}”)
PageFindAllActiveBysearchString(字符串搜索,可分页);
我想知道它不是不区分大小写的,所以我必须用小写数据创建一个特殊的字段并对它进行索引-这是实现我的目标的唯一方法,还是我错过了什么?MongoDb没有针对全文搜索进行优化,所以你必须应对这个限制或使用另一个搜索引擎,如elasticsearch或solr 在内部,这些人正在做你正在做的事情。例如,使用不同的分析器,如小写、stopword过滤、词干分析或n-gram分析进行模糊搜索 当您想要坚持使用MongoDb时,您必须自己编写和索引这些特性