面试题答案
一键面试1. 全文索引提升文本查询效率
在MongoDB中,对于文本查询,最有效的索引类型是全文索引。全文索引支持对文本内容进行更复杂的搜索,如词干提取、停用词处理等,能大大提升搜索效率。
2. 不同查询场景及适用索引类型与创建方法
简单文本匹配场景
- 适用索引类型:单字段普通索引
- 创建方法:
假设我们有一个集合
users
,其中有一个name
字段,我们希望通过name
字段进行简单的文本匹配查询。
db.users.createIndex( { name: 1 } );
这里的 1
表示升序索引,如果是 -1
则表示降序索引。此索引适用于简单的 find
查询,例如:
db.users.find( { name: "John" } );
复杂文本搜索场景
- 适用索引类型:全文索引
- 创建方法:
假设我们有一个博客文章的集合
posts
,其中content
字段存储文章内容,我们希望能够对文章内容进行全文搜索。
db.posts.createIndex( { content: "text" } );
创建全文索引后,可以使用 $text
操作符进行搜索,例如:
db.posts.find( { $text: { $search: "mongodb indexing" } } );
这种方式会对 mongodb
和 indexing
进行更智能的搜索,例如会处理词干(如 index
和 indexing
可能被视为相关),忽略停用词(如 the
, and
等常见词)等。
如果集合中有多个字段需要进行全文搜索,可以创建复合全文索引:
db.posts.createIndex( { title: "text", content: "text" } );
查询时同样使用 $text
操作符:
db.posts.find( { $text: { $search: "mongodb indexing" } } );
此时搜索词会在 title
和 content
两个字段中同时进行搜索。