Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何制作圆点'';和下划线'_';其行为类似于MongoDB中$text索引中的空格_Database_Mongodb_Mongoose_Indexing_Nosql - Fatal编程技术网

Database 如何制作圆点'';和下划线'_';其行为类似于MongoDB中$text索引中的空格

Database 如何制作圆点'';和下划线'_';其行为类似于MongoDB中$text索引中的空格,database,mongodb,mongoose,indexing,nosql,Database,Mongodb,Mongoose,Indexing,Nosql,我将在我的应用程序中添加一个搜索功能,该应用程序在Mongo数据库中有一个用户集合。每个用户都有一个具有以下规则的唯一用户名: 所有字母都是英文小写字母 也可以包含数字、点和下划线 每个用户也有一个名字——一个字母和空格的字符串,类似于Instagram和Twitter的规则。因此,我想创建一个搜索功能,通过名称和用户名属性在users集合中进行搜索。我尝试为这些属性创建索引,如下所示: createIndex({“用户名”:“文本”,“名称”:“文本”}) 这根本不是一个好的解决方案,因为

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

  • 所有字母都是英文小写字母
  • 也可以包含数字、点和下划线
每个用户也有一个名字——一个字母和空格的字符串,类似于Instagram和Twitter的规则。因此,我想创建一个搜索功能,通过名称和用户名属性在users集合中进行搜索。我尝试为这些属性创建索引,如下所示:

createIndex({“用户名”:“文本”,“名称”:“文本”})

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

如果使用Atlas搜索,可以通过映射分析器配置此行为。看

对于文本索引,表示标记化是不可配置的。您可以在文档中创建第二个字段,用于存储为搜索而转换的文本(即u和.替换为空格),并将该字段用作文本索引