微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何制作点“”下划线“ _”的行为类似于MongoDB中$ text索引中的空格

如何解决如何制作点“”下划线“ _”的行为类似于MongoDB中$ text索引中的空格

我将在我的应用程序中添加搜索功能,该应用程序在Mongo数据库中具有一个用户集合。每个用户都有一个具有以下规则的唯一用户名

  • 所有字母均为英文小写字母。
  • 还可以包含数字,点和下划线。

每个用户也有一个名字-字符串和空格,类似于Instagram和Twitter规则。因此,我想提供一种搜索功能,通过name和userName属性在users集合中进行搜索。我试图为这些属性创建一个索引,如下所示:

db.users.createIndex({“ userName”:“ text”,“ name”:“ text”})

这根本不是一个好的解决方案,因为例如,如果有一个用户名为“ hasan.yousef”的用户,而我搜索了“ yousef”,则该用户将不会出现。 我希望听到你们有更好的解决方案或更好的索引设计。我也不确定问题的严重性,我想在其他资源中阅读更多有关类似问题的信息。

解决方法

如果使用Atlas Search,则可以通过映射分析器配置此行为。参见https://docs.atlas.mongodb.com/reference/atlas-search/analyzers/custom/

对于文本索引,https://docs.mongodb.com/manual/core/index-text/#tokenization-delimiters表示令牌化是不可配置的。您可以在文档中创建第二个字段,用于存储为搜索而转换的文本(即_和。替换为空格),并将该字段用作文本索引。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。