我正在寻找一种解决方案,以按用户名+名称和mongodb进行搜索。
我的文档有2个字段:
- 用户名:仅空白字符a-z 0-9 -._
- name:任意字符串
到目前为止,我发现了2种解决方案:
- 使用常规索引为这些字段建立索引,并使用regex ^ searchTerm。*
- 带文本字段的索引
我的常规索引问题:
- MongoDB只能将索引与^ searchTerm一起使用。否则效率不高。因此,如果有人使用“ Sergei Rachmaninov”之类的名字,那么我就无法匹配“ Rach”一词。
我的文本索引问题:
所以我发现也许可以添加searchTerms数组字段或字符串。包含用户名和名称可能的值,并在其上添加文本索引。
Ex:
要么作为数组
- searchTerms:[“ t”,“ ti”,“ tig”,“ tige”,“ tiger”,“ j”,“ jo”,“ joh”,
“ john”,“ r”,“ ri”,“ riv”,...]
或作为字符串
- searchTerms:“ t tig tige tiger j jo joh john r ri riv rivive river”
您认为这是可行的解决方案吗?
还是文本索引的一种反模式使用?