2017-01-02 56 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