[英]Mongo Db search by indexed field
我将字段'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'}})
什么都不返回。 为什么会这样?
来自MongoDB 手册
匹配操作
停止言语
$ text运算符忽略特定于语言的停用词,例如and和in English。
“a”和“are”都在默认的英语停用词列表中,因此将被忽略。 快速谷歌搜索英语停用词将找到大量页面与完整列表。
默认情况下,MongoDB使用英语进行文本索引,并且停用词未编入索引。
如果您指定语言值“none”,则文本搜索使用简单的标记化,没有停用词列表且没有词干。
所以你应该像这样创建你的索引:
db.my_collection.createIndex( { search_string : "text" }, { default_language: "none" } )
MongoDB文档在这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.