跳至主要内容

MongoDB 文本索引

· 閱讀時間約 2 分鐘
Ckai

妥善建立索引可提升資料庫的讀取效能。在 MongoDB 的 CLI 當中可使用下列指令建立索引。

# 建立排序規則為 ASC 的索引
db.collection_name.createIndex({field: 1})

# 建立排序規則為 DESC 的索引
db.collection_name.createIndex({field: -1})

文本索引

上述指令可建立一般索引。如果建立索引的目的是提升查找文本(text)的效能,
則可考慮建立文本索引(Text Index),指令如下:

# 透過文本索引讀取資料
db.collection_name.find({$text: {$search: "string"}})

Stem 與 Stop Words

以英文句子「I am running in the park」為例,
am、the 等單獨存在時無法表達有實際意義的詞彙稱為 Stop Words(停用詞)。 文本索引主要參考 Stop Words 以外的詞與構成,而非儲存資料當中的一字一句。

根據文本索引篩選資料時,篩選的依據是傳入 Filter 當中的詞幹(Stem)。 以 running 為例,其詞幹為 run,而 runs 也可能被視為相同的詞幹。
總而言之,善用停用詞與詞幹的特性,都是有助於節省儲存空間或計算資源的方法。