觀點 · 資訊分享
Firestore 內建全文搜尋與地理搜尋正式上線:找關鍵字、找附近店家,不用另外架搜尋服務
Google Cloud 的 Firestore 全文搜尋與地理搜尋在 10 月 19 日轉為正式版。在 Enterprise 版資料庫建好索引後,就能直接查關鍵字、排除字詞,或找出某個座標方圓幾公尺內的資料。
- 發布
- 2026-10-19
- 篇幅
- 約 4 分鐘 · 1,633 字
- 結構
- 7 節 + 3 題常見問題
- 標籤

一句話看懂:Google Cloud 的 Firestore 資料庫內建的全文搜尋與地理搜尋正式上線,找關鍵字、找附近的店家都能直接在資料庫裡做,但只限 Enterprise 版。

先用白話講:全文搜尋和地理搜尋是什麼?
想像你在經營一個美食 App。使用者最常做兩件事:
- 打「比利時鬆餅」,想找菜單上有這道菜的店,這是全文搜尋:在一大堆文字裡找出含有某些字詞的資料
- 按「找我附近」,想看方圓 1 公里內有哪些店,這是地理搜尋:依座標和距離篩選資料
很多資料庫原本只擅長「欄位等於某個值」這種查詢,要做上面兩件事,常得另外接一套搜尋服務,還要想辦法讓兩邊資料同步。Firestore 這次把這兩種搜尋直接做進資料庫裡。
發生什麼事
- 2026 年 4 月 20 日:Firestore Enterprise 版推出全文搜尋與地理搜尋,屬於預覽功能
- 2026 年 10 月 19 日:Firestore 更新日誌宣布兩項功能轉為正式版(GA)
依官方文件,使用條件是:
- 必須是 Firestore Enterprise 版資料庫
- 每個要搜尋的欄位都要先建立對應的全文索引或地理索引
- 強制落實「使用中資料落地」的 Assured Workloads 控制套件不支援全文搜尋
全文搜尋能怎麼查?
| 寫法 | 意思 |
|---|---|
waffles |
含有這個字 |
"belgian waffles" |
加引號,完整片語 |
waffles eggs |
空白分隔,兩個字都要有 |
coffee -waffles |
減號,排除某個字 |
pizza -"New York" |
排除某個片語 |
menu:waffles |
只在指定欄位找 |
結果預設依文件建立時間由新到舊排序;改用 score().descending() 可以依相關程度排序,但官方提醒會用到比較多運算。
給開發者的技術細節
兩種搜尋都是寫在 Pipeline 查詢的 search(...) 階段裡。Node.js 範例(取自官方文件):
// 全文搜尋:找含有 waffles 的餐廳
await db.pipeline().collection('restaurants')
.search({ query: documentMatches('waffles') })
.execute();
// 地理搜尋:找某座標 1,000 公尺內的餐廳
firestore.pipeline().collection('restaurants')
.search({
query: field('location')
.geoDistance(new GeoPoint(38.989177, -107.065076))
.lessThan(1000)
});
- 距離單位是公尺
- 文件寫地理搜尋只支援「小於或等於」比較,但範例用的是
lessThan,兩處寫法不一致,實作時建議自己測邊界值 - 官方提供 Web、iOS、Android、Node.js、Python、Java、Go 等範例
- 文件沒有寫用量上限與價格,上線前請先確認 Enterprise 版的計費方式
我的看法
接案做會員系統、電商或預約平台時,「搜尋」幾乎是必備功能,但小專案為了一個搜尋框另外架一套搜尋引擎,維護成本很高,資料同步出錯時還很難查。能在資料庫裡直接做,對小團隊是實實在在的簡化。
不過要先確認兩件事:第一,這只在 Enterprise 版能用,如果你的專案還在標準版,要評估換版的成本;第二,官方文件沒寫中文斷詞的支援狀況,做中文內容的網站,一定要先拿真實資料測,看看搜「鬆餅」能不能找到「比利時鬆餅」,再決定要不要靠它。
名詞小辭典
- Firestore:Google Cloud 的文件型資料庫,常用在手機 App 與網站後端。
- 全文搜尋(Full-text Search):在大量文字內容裡找出含有特定字詞的資料。
- 索引(Index):資料庫為了加快查詢而事先整理好的目錄,就像書後面的索引頁。
- GA(正式上線):功能結束預覽,正式提供給客戶在正式環境使用。
資料來源
常見問題
標準版(Standard)Firestore 可以用嗎?
不行。官方文件寫明全文搜尋與地理搜尋都需要 Firestore Enterprise 版資料庫。
搜尋結果可以依相關程度排序嗎?
可以。預設是依文件建立時間由新到舊排序,改用 score().descending() 就能依搜尋分數排序,但官方提醒這需要比較多的運算。
地理搜尋的距離怎麼算?
距離單位是公尺。官方範例用 geoDistance 指定一個座標,再找出 1,000 公尺內的餐廳。文件寫只支援「小於或等於」的比較,但範例程式用的是 lessThan,兩處寫法不太一致,實作時建議實測邊界值。
接著讀
全部觀點 →BigQuery 的 AI 函式可以設每日 token 上限了:一行 SQL 燒掉整月預算的風險變小Google 宣布 BigQuery 生成式 AI 函式的 token 配額正式上線,可以替整個專案或每位使用者設每日的輸入、輸出 token 上限,調低立即生效,避免一次查詢就把預算燒光。閱讀 →Google Cloud 預算終於能「踩煞車」:Gemini API、Cloud Run 花超過上限就自動暫停Google Cloud 的支出上限預算正式上線:替 Gemini API、Cloud Run 等服務設一個月預算,估計花費超過就自動暫停新請求,下個月一號自動恢復。以前的預算只會寄信提醒,帳單爆掉也擋不住。閱讀 →Google Cloud Run 可以直接 SSH 進容器了:除錯不用再猜,憑證 5 分鐘就失效Google Cloud Run 推出 SSH 預覽功能,開發者可以用 gcloud 指令連進正在執行的容器裡查檔案、看設定、排除問題。連線經過 IAP 驗證、用 5 分鐘效期的 SSH 憑證,單次最長 24 小時。閱讀 →