如何制作点“。”和下划线 '_' 的行为类似于 MongoDB 中 $text 索引中的空格
Posted
技术标签:
【中文标题】如何制作点“。”和下划线 \'_\' 的行为类似于 MongoDB 中 $text 索引中的空格【英文标题】:How to make the dot '.' and the underscore '_' behave like the space in $text index in MongoDB如何制作点“。”和下划线 '_' 的行为类似于 MongoDB 中 $text 索引中的空格 【发布时间】:2021-01-25 15:44:31 【问题描述】:我即将在我的应用程序中添加搜索功能,该应用程序在 Mongo 数据库中有一个用户集合。每个用户都有一个唯一的用户名和规则:
所有字母均为英文小写字母。 还可以包含数字、点和下划线。每个用户还有一个名字——一串字母和空格,类似于 Instagram 和 Twitter 规则。所以我想创建一个搜索功能,通过 name 和 userName 属性在 users 集合中搜索。我尝试为这些属性创建索引,如下所示:
db.users.createIndex("userName": "text", "name": "text")
这根本不是一个好的解决方案,因为例如如果有一个用户名为“hasan.yousef”的用户,而我搜索“yousef”,这个用户就不会出现。 我想听听你们关于更好的解决方案或更好的索引设计的意见。我也不确定问题的大小,我想了解更多关于其他资源中类似问题的信息。
【问题讨论】:
【参考方案1】:如果您使用 Atlas Search,则可以通过映射分析器配置此行为。见https://docs.atlas.mongodb.com/reference/atlas-search/analyzers/custom/。
对于文本索引,https://docs.mongodb.com/manual/core/index-text/#tokenization-delimiters 表示标记化不可配置。您可以在文档中创建第二个字段来存储为搜索转换的文本(即 _ 和 . 替换为空格)并将该字段用于文本索引。
【讨论】:
以上是关于如何制作点“。”和下划线 '_' 的行为类似于 MongoDB 中 $text 索引中的空格的主要内容,如果未能解决你的问题,请参考以下文章
如何创建一组行为类似于 RadioButtons 的 ToggleButtons?