一、准备工作
这里准备一些数据
db.books.drop();
db.books.insert({_id: 1, name: "Java", alias: "java 入门", description: "入门图书" });
db.books.insert({_id: 2, name: "C++", alias: "c++", description: "C++ 入门图书" });
db.books.insert({_id: 3, name: "Java设计模式", alias: "设计模式", description: "java 设计模式" });
二、创建索引
1、创建索引
db.books.createIndex(
{
alias: 'text',
description: 'text'
},
{
weights: {
alias: 5,
description: 10
}
}
);
上面创建了alias、description字段的文本索引并指定了weights权重;
2、查询索引
db.books.getIndexes();
结果如下:
可以看到weights权重已经设置成功
3、执行查询
db.books.find({ $text: { $search: 'java' } });
结果如下:
可以看到查询出了两条数据,由于description字段比alias字段权重高,导致_id为3的数据匹配度比_id为1的数据匹配度高。
4、执行过程
db.books.find({ $text: { $search: 'java' } }).explain();
结果如下: