2017-01-02 149 views
0

這是一個後續問題到另一個問題,我有 - Benefits of using Document DB after connecting with Azure Search建模數據

存儲在DocumentDB您的數據和整合與Azure的搜索需要你你的數據模型兩次 - 一次爲DocDB中的文檔和另一個用於Azure搜索中的搜索實體。

有人這樣做成功嗎?有沒有辦法可以將我在DocDB中定義的文檔重用爲Azure搜索中的搜索實體?

編輯:我已經與一個索引器集成在一起,以便在Azure搜索中進行搜索,並且搜索本身效果很好。我現在面臨以下情況 - 我使用DocumentDB上的查詢來獲取項目,這些項目在多個屬性上進行過濾。如果我想允許使用同一組過濾器進行搜索,則需要指定我用作索引字段的屬性。因此,通過指定這些領域,我基本上是建立一個新的數據模型(它的I類有DocumentDB的複製)

例如,假設我有下面的類,我存儲在DocDB:

class MyItem 
{ 
    public string Name { get; set;} 
    public double Price { get; set; } 
} 

我創建了一個索引,指定我想要在名稱上進行搜索並篩選價格。現在,我添加新功能的類,以便它也顯示了可用性

class MyItem 
{ 
    public string Name { get; set;} 
    public double Price { get; set; } 
    public bool IsAvailable { get; set; } 
} 

現在我需要IsAvailabile添加爲過濾場在我的指標,並重新索引。所以索引器的字段列表就是我的類的屬性的重複,也導致了我的代碼中的耦合。有沒有辦法有效地解決這個問題?

+0

我不確定我是否理解這個問題。您是否在Azure搜索中使用索引器從數據庫中提取數據?許多客戶使用此功能,因此應該符合「成功完成」的條件。你有什麼具體問題嗎? –

+0

我已更新我的問題並提供更多詳細信息 – PartlyCloudy

+1

如果您的文檔是這樣的,那麼根本就不需要索引查詢 - 默認查詢類似於'select * from c where c._ts> = @HighWaterMark按c._ts'順序排列,因此您的DocumentDb文檔中的任何新字段都會自動提取。但是,您確實需要爲搜索索引架構添加新字段。 –

回答

0

成百上千的客戶正在成功使用DocumentDB/Search集成。但是,您需要記住,儘管DocumentDb支持存儲任意JSON文檔,但Azure Search當前僅支持由基本類型和字符串數組組成的「平面」文檔。因此,您可能需要使用數據源的查詢參數將DocumentDb文檔「拼合」爲搜索模式的形狀。

+0

我更新了我的問題並提供了更多詳細信息 – PartlyCloudy