Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Azure Search indexer具有自己行版本的索引视图_Sql_Tsql_Azure_Indexed View_Azure Cognitive Search - Fatal编程技术网

Sql Azure Search indexer具有自己行版本的索引视图

Sql Azure Search indexer具有自己行版本的索引视图,sql,tsql,azure,indexed-view,azure-cognitive-search,Sql,Tsql,Azure,Indexed View,Azure Cognitive Search,我正在尝试设计将我的数据索引到Azure Search中的最佳方法。假设我的Azure SQL数据库包含两个表: 产品 命令 在我的Azure搜索索引中,我不仅希望有产品(名称、类别、描述等),还希望有此产品的订单数量(在评分配置文件中使用此项,以提升搜索结果中的热门产品) 我认为最好的方法是创建一个视图(索引视图?),该视图将包含来自产品的列和每个产品的订单数量,但我不确定我的视图(索引视图?)是否可以有自己的rowversion列,该列将在每次数量更改时更改(订单可能被撤回-删除-放置-

我正在尝试设计将我的数据索引到Azure Search中的最佳方法。假设我的Azure SQL数据库包含两个表:

  • 产品
  • 命令
在我的Azure搜索索引中,我不仅希望有产品(名称、类别、描述等),还希望有此产品的订单数量(在评分配置文件中使用此项,以提升搜索结果中的热门产品)

我认为最好的方法是创建一个视图(索引视图?),该视图将包含来自产品的列和每个产品的订单数量,但我不确定我的视图(索引视图?)是否可以有自己的rowversion列,该列将在每次数量更改时更改(订单可能被撤回-删除-放置-插入)

也许有更简单的办法解决我的问题?如有任何提示,我们将不胜感激

问候,,
MJ

是的,我相信您希望这样做的方式是一个很好的方法。我看到人们做的其他一些事情是还包括类型,例如,您可以有一个集合字段(它是一个字符串数组),可能称为OrderTypes,您可以将其与该产品的所有关联订单类型一起加载。这样,您就可以使用Azure Search$facets功能向您显示特定订单类型的总数。此外,您还可以使用它来深入了解这些订单的细节。例如,您可以根据他们选择的订单类型进行筛选。当然,如果有太多类型的订单,这可能是不可行的

在任何情况下,是的,我认为这会很好地工作,而且不要忘记,如果您想定期更新此计数,您可以只传递该值(而不是发送整个产品字段)以提高效率。

视图不能有“自己的”rowversion列-该列应来自products或orders表。如果将该列编入索引,则高水位线更改跟踪策略将能够高效地捕获新的或更新的(但不是删除的)行。如果产品被删除,您应该考虑使用软删除方法,如中所述

嗯,,
尤金

还有一件事可能很重要。我将每5分钟更新一次Azure搜索索引,我的目标是只对订单数量已更改的产品重新编制索引。视图(无论是否编制索引)不能有“自己的”数据。所有数据都是计算出来的,谢谢。我想出了另一个主意。假设我有两个表:产品和变体,它们都有自己的版本。在视图(连接两个表)中,我使用以下语句计算一个公共rowversion列:
cast((cast(p.LastVersion为int)+cast(v.LastVersion为int))作为rowversion,因为CommonLastVersion
CommonLastVersion不是唯一的,所以我无法为该列编制索引。这会是个问题吗?在提供的链接中,建议对rowversion列进行索引。实际上,我可以有索引,但没有唯一索引,因此我认为这种态度会起作用。您可以通过最多取两个rowversion值来保持唯一性。Rowversion计数器对于数据库是全局的,所以不同表中的值总是唯一的