首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring数据+ Mongo案例-非敏感文本搜索

Spring数据+ Mongo案例-非敏感文本搜索
EN

Stack Overflow用户
提问于 2015-10-26 06:24:50
回答 1查看 760关注 0票数 0

我正在尝试使用spring数据仓库在mongodb中的几个字段上实现不区分大小写的文本搜索。我找到了两个解决方案,每一个都有一些缺点:

  1. 使用regex: @Query("{'status':'ACTIVE',$or:{‘$regex’‘:{$regex:?0,$options:'i'}},{'location.text':{$regex:?0,$options:’i‘}}“)页面findAllActiveBySearchString(字符串搜索,可分页);

这样的查询在字符串"/“、"*”上失败,并返回".“上的所有条目,因此我不得不转义这些字符或以某种方式过滤它,但我甚至不知道有多少这样的查询可以存在。因此,我的问题是如何100%确保查询执行搜索,将每个字符视为普通字符,而不是特殊字符

  1. 使用$text索引时,需要在此之前创建该索引(没有问题)。解决方案也有更好的性能,不是吗? @Query("{'status':'ACTIVE',$text:{$search:?0}}")页面findAllActiveBySearchString(字符串搜索,可分页);

我想知道它不区分大小写,所以我必须用小写数据创建特殊的字段并对其进行索引--是实现目标的唯一方法,否则我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2015-10-26 06:48:12

MongoDb不是针对全文搜索引擎进行优化的,所以您必须处理这个限制,或者使用另一个搜索引擎,比如elasticsearch或solr。

在内部,这些人也在做着你正在做的事情。例如,使用不同的分析器,如小写、停止词过滤、词干词干分析或n-图分析来进行模糊搜索。

当您想要坚持使用MongoDb时,您必须自己编写和索引这些特性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33339636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档