我需要使用MongoDB创建实时搜索。但我不知道哪个指数最好使用normal或text。昨天我发现他们之间有main differences。我有一份以下文件:
{
title: 'What vitamins are found in blueberries'
//other fields
}
因此,当用户输入蓝色时,系统必须找到此文档(... 蓝色浆果)。
我在文章中发现了这些差异:
另一个硬文本上的文本索引将标记化并阻止字段的内容。因此,它会将字符串分解为单个单词或标记,并进一步将它们缩小到它们的词干,以便相同单词的变体匹配("谈话"匹配"会谈",&# 34;谈论"和#34;说话"例如," talk"是这三者的主干。
那么,为什么文本索引及其后续搜索比非索引文本字段上的正则表达式更快?这是因为文本索引是一个字典,一个能够在每种语言基础上丢弃单词的聪明的字典(默认为英语)。当您运行文本搜索查询时,您将对字典运行它,从而节省您在整个集合中迭代所花费的时间。
这就是我所需要的,但是:
$ text运算符可以搜索单词和短语。查询匹配完整的词干。例如,如果文档字段包含单词blueberry,则对术语blue的搜索将与文档不匹配。但是,对蓝莓或蓝莓的搜索将匹配。
我需要一个快速聪明的字典,但我也需要通过子字符串搜索。我如何加入这两种方法?