我将字段'search_string'添加到我的文档中并将其编入索引。 db.my_collection.createIndex({search_string: "text"})
Search_string包含:'a ar are aren arena'。
我可以通过以下方式找到记录:db.my_collection.find({$text: {$search: 'ar'}})
,db.my_collection.find({$text: {$search: 'аren'}})
,db.my_collection.find({$text: {$search: 'arenа'}})
,但db.my_collection.find({$text: {$search: 'а'}})
和db.my_collection.find({$text: {$search: 'аre'}})
不返回任何内容。为什么会这样?
答案 0 :(得分:4)
来自MongoDB manual
匹配操作
停止词语
$ text运算符忽略语言特定的停用词,例如and和in English。
两者" a" """在默认的英语停用词列表中,因此将被忽略。快速谷歌搜索英语停用词将找到大量页面与完整列表。
答案 1 :(得分:1)
默认情况下,MongoDB使用英语进行文本索引,停用词未编入索引。
如果指定语言值为“none”,则文本搜索使用简单的标记化,没有停用词列表且没有词干。
所以你应该像这样创建索引:
db.my_collection.createIndex(
{ search_string : "text" },
{ default_language: "none" }
)
MongoDB文档here。