Azure搜索分层搜索字段

时间:2015-02-13 19:45:05

标签: search odata azure-search

我正在评估Azure搜索项目。 MSDN文章只有Flattened架构结构。以下是我正在查看的示例场景。

以下是"项目"提及"问题"类。和"问题"拥有它自己的一组字段

public class Project
    {
        public Guid Id
        {
            get;
            set;
        }

        public string Owner
        {
            get;
            set;
        }

        public string Title
        {
            get;
            set;
        }

        public List<Question> QuestionList
        {
            get;
            set;
        }

        public bool Disable
        {
            get;
            set;
        }

}

public class Question
    {
        public Guid Id { get; set; }

        public string Title { get; set; }

        public string Description { get; set; }
    }
  

下面是项目的索引架构

  • Id - Edm.String
  • 所有者 - Edm.String
  • 标题 - Edm.String
  • QuestionList - Collection(Edm.String)

问题

  • 是否可以指定QuestionList中的每个项目都有分层数据?
  • 是否可以在内部搜索&#34;标题&#34; &#34;问题&#34;?
  • 我看到的唯一可能是创建&#34;问题&#34;单独使用它

我在MSDN中看到的唯一一点是以下段落,我无法理解它

  

分面导航中的级别

     

如上所述,没有直接支持嵌套方面   层次结构。开箱即用,分面导航仅支持一个级别   过滤器但是,确实存在变通方法。你可以编码一个   Collection(Edm.String)中的一个分层构面结构   每个层次的入口点。实施此解决方法超出了   本文的范围,但您可以阅读OData中的集合   实施例。

1 个答案:

答案 0 :(得分:2)

对于您的第一个问题,Azure搜索不允许分层数据类型,并且搜索您需要像您为作为集合创建的QuestionList字段那样展平数据。如果您询问如何根据此Collection中的项目过滤结果,则可以使用OData表达式,例如$ filter = QuestionList / any(t:t eq&#39; Question1&#39;)({{3} })

我认为对于你的第二个问题,你感兴趣的只是搜索&#34; Title&#34; &#34;问题&#34;,对吗?为此,您可以使用SearchFields参数(https://msdn.microsoft.com/en-us/library/azure/dn798921.aspx)。

利安