你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
基于 vCore 的 Azure Cosmos DB for MongoDB 中的全文搜索功能提供了强大的文档搜索功能,超出了传统查询方法。 这种高级搜索技术使用户能够基于自然语言处理、单词变体和上下文相关性(而不仅仅是完全匹配)来发现相关内容。
集成文本搜索引擎无需外部搜索服务。 这有助于简化数据库体系结构。 它使用专用文本索引高效处理搜索作。 系统处理、标记和分析文档内容。 因此,应用程序可以快速查找包含特定关键字、短语或相关术语的文档。
注释
基于 vCore 的 Azure Cosmos DB for MongoDB 的全文搜索在底层使用 PostgreSQL 风格的 TSVector 索引,并支持 MongoDB 的 $text 操作符。
功能支持
| 功能 / 特点 | 支持级别 | DESCRIPTION | 示例查询 |
|---|---|---|---|
| 标记化 | 已支持 | 使用 TSVector 将文本分解为单个令牌 | 不适用 |
| 词干分析 | 已支持 | 基于语言分析器会将拐点字词转换为其根窗体 | 不适用 |
| 语言支持 | 部分支持 | 支持丹麦语(da)、荷兰语(nl)、英语(en)、芬兰语(fi)、法语(fr)、德语(de)、匈牙利语(hu)、意大利语(it)、挪威语(nb)、葡萄牙语(pt)、罗马尼亚语(ro)、俄语(ru)、西班牙语(es)、瑞典语(sv)、土耳其语(tr) |
db.text_search.find({ "$text": { "$search": "leche", "$language": "es" } }) |
| 基于字词的搜索 | 已支持 | 索引字段中的精确字词搜索 | db.movies.find({ "$text": { "$search": "surfer" } }) |
| 短语搜索 | 部分支持 | 使用引号的完全短语匹配。 存在一些兼容性问题。 | db.text_search.find({ "$text": { "$search": "\"are cats\"" } }) |
| 前缀查询 | 已支持 | 使用正则表达式查找以模式开头的术语 | db.articles.find({ title: { $regex: /^data/i } }) |
| 通配符搜索 | 已支持 | 使用正则表达式 + $text 的匹配灵活模式 |
db.articles.find({ $and: [ { $text: { $search: "hello" } }, { title: { $regex: /.*world.*/i } } ] }) |
| 正则表达式搜索 | 已支持 | 使用正则表达式进行灵活的文本模式匹配 | db.articles.find({ title: { $regex: /^hello.*world$/i } }) |
| 布尔运算符 | 已支持 | 使用 +, - 以包括/排除术语 |
db.text_search.find({ "$text": { "$search": "cafe +con" } }) |
| 多匹配 | 部分支持 | 通过组合索引和权重进行多字段查询 | db.myColl.createIndex({ title: "text", genre: "text" }, { default_language: "english", weights: { title: 10, genre: 3 } }) |
| 分面搜索 | 不可用 | 按类别或标记(例如品牌、颜色、价格)筛选搜索结果。 在 vCore 文本搜索中不受支持本机。 | 不适用 |
| 自动完成和提升 | 不可用 | 不支持自动完成(预先输入建议)和查询时提升特定术语。 只能通过字段权重在索引级别执行提升。 | 不适用 |
| 自定义分析器 | 不可用 | 不支持自定义标记化或筛选 | 不适用 |
| 同义词支持 | 不可用 | 没有对同义词的原生支持 | 不适用 |
| 模糊搜索 | 不可用 | 不支持拼写错误容忍功能或模糊匹配功能 | 不适用 |
| 邻近搜索 | 不可用 | 无法在特定字词距离内搜索词 | 不适用 |