以虛擬核心為基礎的 Azure Cosmos DB for MongoDB 中的全文搜尋功能提供超越傳統查詢方法的強大文件搜尋功能。 此進階搜尋技術可讓用戶根據自然語言處理、詞彙變化和內容相關性來尋找相關內容,而不只是完全相符的項目。
整合式文字搜尋引擎會移除外部搜尋服務的需求。 這有助於簡化資料庫架構。 它會使用特製化的文字索引,有效率地處理搜尋作業。 系統會處理、標記化及分析文件內容。 因此,您的應用程式可以快速找到包含特定關鍵詞、片語或相關字詞的檔。
備註
以虛擬核心為基礎的 Azure Cosmos DB for MongoDB 中的全文搜索會在幕後使用 PostgreSQL 樣式的 TSVector 索引,並支援 MongoDB 的 $text
作員。
功能支援
特徵 / 功能 | 支援層級 | 說明 | 範例查詢 |
---|---|---|---|
Tokenization | 支持 | 使用 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\"" } }) |
前置詞查詢 | 支持 | 使用 regex 尋找以模式開頭的字詞 | db.articles.find({ title: { $regex: /^data/i } }) |
萬用字元搜尋 | 支持 | 使用 regex + $text 比對彈性模式 |
db.articles.find({ $and: [ { $text: { $search: "hello" } }, { title: { $regex: /.*world.*/i } } ] }) |
Regex 搜尋 | 支持 | 使用正則表達式進行彈性文字模式比對 | 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 文字搜尋並未原生支援。 | 不適用 |
自動完成和提升 | 不提供 | 不支援特定字詞的自動完成 (預先輸入建議) 和查詢時間提升。 提升只能在索引層級透過欄位加權完成。 | 不適用 |
自定義分析器 | 不提供 | 不支援自定義令牌化或篩選 | 不適用 |
同義字支援 | 不提供 | 沒有對同義字的內建支援 | 不適用 |
模糊搜尋 | 不提供 | 不支援錯字容忍或模糊比對 | 不適用 |
鄰近搜尋 | 不提供 | 無法搜尋在特定字距內的詞彙 | 不適用 |