2015-12-02 37 views
0

我正在開發類似聊天的應用程序,並希望爲其提供搜索功能。我正在考慮使用Azure搜索。一旦有可能將每個聊天室視爲Azure搜索中的單個實體,以便每個實體代表一個聊天室。我遇到的挑戰是因爲每個聊天室不停地接收新消息,聊天室的索引不斷變化。我可以使用隊列機制來排隊更改並更新Azure搜索中的實體,但我不知道它是否是一個好的可擴展解決方案。顯然,我需要增加副本的數量以跟上更改。任何建議? Azure是否搜索適合這種情況的工具?當實體在Azure搜索中不斷變化時該怎麼辦?

回答

3

H.Z.,

我們確實有使用我們的聊天/即時消息應用程序的客戶,所以我們可能會針對您的需求是可行的。在我回答您的問題之前,您能告訴我您希望能夠搜索哪些類型的東西嗎?

它僅僅是搜索聊天室還是搜索聊天室以及聊天室內的消息?如果只是搜索聊天室,則可能需要考慮採用建議的方法,然後將聊天消息存儲在較低成本的商店(如Azure存儲)中,然後根據需要簡單地提取消息文本。

如果是後者,那麼接下來的問題是您是否希望能夠跨越聊天室和他們內部的消息進行搜索,這將表明讓他們內部的消息具有很大意義一個索引,儘管無論您是將所有郵件放在單個文檔中,還是每個郵件都有一個文檔,我們應該鑽取更多。我認爲在一個索引中包含所有消息的主要問題是在用戶想要在聊天室中鑽取(或過濾)特定消息的情況下。如果您將郵件拆分爲單獨的文檔,我認爲這可能會更難一些。

另一種選擇可能是有2個索引。一個擁有聊天室,另一個擁有其中的個人信息。

無論如何,我希望這有助於作爲一個開始,並根據您的反應,希望我可以幫助您深入細節。

利亞姆

+0

謝謝@Liam的詳細答案。事實上,搜索char間和消息是最終目標。我們首先考慮搜索聊天室並將聊天室的所有消息保存在一個實體中。因爲會有很多消息傳出,所以單個聊天室的索引應該不斷更新。對搜索服務沒有巨大影響?實現它的最佳方式是使用Service Bus類型的隊列,然後使用輔助角色更新每條消息的索引? –

+0

我的另一個問題是關於索引器?我是否仍然可以使用索引器並對其進行自定義,以便根據需要更新索引?考慮聊天室標題或成員也可以更新的情景。 –

+0

順便說一句,我沒有完全得到你的建議在Azure表中存儲郵件。您是否意味着將郵件存儲在永久存儲中,並使用計劃索引器將其拖至Azure搜索? –