觀點 · 資訊分享

Firestore 內建全文搜尋與地理搜尋正式上線:找關鍵字、找附近店家,不用另外架搜尋服務

Google Cloud 的 Firestore 全文搜尋與地理搜尋在 10 月 19 日轉為正式版。在 Enterprise 版資料庫建好索引後,就能直接查關鍵字、排除字詞,或找出某個座標方圓幾公尺內的資料。

發布
2026-10-19
篇幅
約 4 分鐘 · 1,633 字
結構
7 節 + 3 題常見問題
標籤
#Google Cloud#Firestore#全文搜尋#地理搜尋
Firestore 內建全文搜尋與地理搜尋正式上線:找關鍵字、找附近店家,不用另外架搜尋服務

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

Firestore 全文與地理搜尋正式上線資訊圖卡:不用再另外架搜尋服務,在 Firestore 裡就能找關鍵字、找附近

先用白話講:全文搜尋和地理搜尋是什麼?

想像你在經營一個美食 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,兩處寫法不太一致,實作時建議實測邊界值。
LINE