Mongo Db按索引字段搜索

时间:2016-07-20 12:09:23

标签: mongodb search full-text-search

我将字段'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'}})不返回任何内容。为什么会这样?

2 个答案:

答案 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