亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firebase和索引/搜索

Firebase和索引/搜索

qq_遁去的一_1 2019-10-10 16:51:51
我正在考慮將Firebase用于應該使人們在數千個對象的集合上使用全文本搜索的應用程序。我喜歡交付僅客戶端應用程序的想法(不必擔心托管數據),但是我不確定如何處理搜索。數據將是靜態的,因此索引本身并不重要。我假設我將需要一些額外的服務來運行查詢并返回Firebase對象句柄。我可以在某個固定位置啟動此類服務,但隨后我不得不擔心其可用性和廣告可伸縮性。盡管我預計該應用不會帶來太多流量,但它可能會達到數千個并發用戶的峰值。建筑思想?
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

從長遠來看,Firebase將具有更高級的查詢,因此希望它可以直接支持此類操作,而您無需執行任何特殊操作。在此之前,您有幾種選擇:

  1. 編寫服務器代碼以處理搜索。 正如您提到的,最簡單的方法是運行一些負責索引/搜索的服務器代碼。Firebase具有Node.JS客戶端,因此這是將服務連接到Firebase的簡便方法。所有數據傳輸仍可能通過Firebase進行,但是您將編寫一個Node.JS服務,該服務在Firebase中的某個指定位置監視客戶端“搜索請求”,然后通過將結果集寫回Firebase來“響應”??蛻粝M。

  2. 將索引存儲在Firebase中,客戶端會自動對其進行更新。 如果您想變得真正聰明,則可以嘗試實施一種無服務器方案,在該方案中,客戶端在寫入數據時會自動為其索引。因此,全文搜索的索引將存儲在Firebase中,并且在客戶端寫入時集合中的一個新項目,它將負責適當地更新索引。為了進行搜索,客戶端將直接使用索引來構建結果集。對于要為Firebase中存儲的復雜對象的一個字段建立索引的簡單情況,這實際上是很有意義的,但是對于全文搜索而言,這可能會很粗糙。:-)

  3. 將索引存儲在Firebase中,并使用服務器代碼對其進行更新。您可以嘗試一種混合方法,將索引存儲在Firebase中,并由客戶端直接用于搜索,但是要讓客戶端更新索引,而不是讓客戶端將索引添加到集合中時就更新索引的服務器代碼。這樣,當服務器關閉時,客戶端仍然可以搜索數據。在服務器追上索引之前,它們可能會獲得過時的結果。

在Firebase進行更高級的查詢之前,如果您愿意運行一些服務器代碼,那么#1可能是最好的選擇。:-)


查看完整回答
反對 回復 2019-10-10
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

Google當前進行全文搜索的方法似乎正在與Algolia或BigQuery以及帶有Cloud Functions for Firebase的BigQuery進行同步。


這是Firebase的Algolia全文搜索集成示例,其BigQuery集成示例可以擴展為支持完整搜索。


查看完整回答
反對 回復 2019-10-10
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

只需重新閱讀您的評論,即您的數據是靜態的即可。在這種情況下,不需要選擇選項#2,而使選項#3變得更容易。您仍然需要弄清楚如何構建全文搜索索引,將其存儲在Firebase中,并讓客戶端直接查詢它,但是應該完全可行。

查看完整回答
反對 回復 2019-10-10
  • 3 回答
  • 0 關注
  • 533 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號