2015-03-13 83 views
0

我試圖設計將數據索引到Azure搜索的最佳方式。比方說,我的Azure的SQL數據庫包含兩個表:帶有自己的rowversion for Azure搜索索引器的索引視圖

  • 產品
  • 訂單

在我的Azure的搜索索引我想擁有的不僅是產品(名稱,類別,描述等),但也計算此產品的訂單數量(在評分配置文件中使用此數據以提高搜索結果中的熱門產品數量)。

我認爲最好的方法是創建一個視圖(索引視圖?),它將包含來自產品的列和每個產品的訂單數,但我不確定我的視圖(索引視圖? )可以有自己的rowversion列,每當計數發生變化(訂單可能會被撤銷 - DELETED - 並放置 - INSERTED),它們都會發生變化。

也許有一些更容易解決我的問題?任何提示都表示讚賞。

問候, MJ

+0

其中一個可能是重要的還有一點。我將每5分鐘更新一次Azure搜索索引,我的目標是僅對那些訂單數量已更改的產品進行重新索引。 – 2015-03-13 16:58:23

+0

無論索引與否,視圖都不能擁有「自己」的數據。所有數據都會被計算。 – usr 2015-03-13 17:21:57

回答

0

視圖不能擁有其「自己的」rowversion列 - 該列應來自產品或訂單表。如果您將該列編入索引,高水位更改跟蹤策略將能夠有效捕獲新的或更新的(但未刪除的)行。如果產品被刪除,你應該考慮使用在http://azure.microsoft.com/en-us/documentation/articles/search-howto-connecting-azure-sql-database-to-azure-search-using-indexers-2015-02-28/

HTH描述的軟刪除方法, 尤金

+0

謝謝。我想出了另一個想法。假設我有兩個表格:產品和變體,並且都有自己的「行列」。在視圖中(JOIN兩個表),我使用這樣的語句計算一個公共的rowversion列:'cast((cast(p.LastVersion as int)+ cast(v.LastVersion as int))as rowversion)AS CommonLastVersion' CommonLastVersion不是唯一的,所以我不能索引這一列。這會是一個問題嗎?在提供的鏈接中推薦使用rowversion列索引。 – 2015-03-18 13:32:56

+0

其實,我可以有索引但不是唯一索引,所以我認爲這種態度會起作用。 – 2015-03-18 15:20:00

+0

您可以通過取兩個rowversion值的最大值來保留唯一性。 Rowversion計數器對於數據庫是全局的,因此不同表中的值始終是唯一的 – 2015-03-18 18:06:41

0

是的,我相信你正在尋找這樣做的方法是一個很好的辦法。我見過的其他一些事情還包括類型。例如,您可以有一個集合字段(這是一個字符串數組),可能稱爲OrderTypes,您可以使用該產品的所有關聯訂單類型加載。這樣,您可以使用Azure Search $ facets功能向您​​顯示特定訂單類型的總數。此外,您可以使用它來深入瞭解這些訂單的細節。例如,您可以根據所選的訂單類型進行過濾。當然,如果訂單類型太多,也許這可能是不可行的。

無論如何,是的,我認爲這樣做會很好,也不要忘記,如果您想定期更新此計數,您可以簡單地傳遞該值(而不是發送整個產品字段)它更有效率。