在mongodb中搜索全文

时间:2016-10-28 06:22:13

标签: php mongodb

db.collection.createIndex({"type_name":"text"});
db.collection.find();

输出:

{ "type_id" : "10735", "type_name" : "Tycho" }

{ "type_id" : "1550", "type_name" : "Trina" }

{ "type_id" : "12925", "type_name" : "Tiffany" }

{ "type_id" : "1637", "type_name" : "The Wombats" }

{ "type_id" : "11470", "type_name" : "The Wanted" }

使用:

db.collection.find({'$text':{'$search':"The Wombats"}})

输出:

{ "type_id" : "1637", "type_name" : "The Wombats" }

使用:

db.collection.find({'$text':{'$search':"Wombats"}});

输出:

{ "type_id" : "1637", "type_name" : "The Wombats" }

但是当我尝试时:

db.collection.find({'$text':{'$search':"The"}});

输出:

0

我期待不同的输出,出了什么问题?

2 个答案:

答案 0 :(得分:0)

Mongodb对$ text运算符有一些停用词。

停止词语

$ text运算符会忽略特定于语言的停用词,例如 以及的英语。

由于您在查询db.collection.find({'$text':{'$search':"The"}})中使用其中一个停用词,因此未返回任何结果。

参考文献:

https://docs.mongodb.com/v3.2/reference/operator/query/text/#op._S_text

https://docs.mongodb.com/v3.2/reference/operator/query/text/#match-operation

答案 1 :(得分:0)

但是当我尝试这个时

$ regex = new MongoRegex(" / ^" .the。" ^ /"。" / i");

$ artistNmaeRenge = array(' type_name' => $ regex); 它的工作