2

我正在评估一个项目的 Azure 搜索。MSDN 文章只有扁平化架构结构。下面是我正在查看的示例场景。

以下是参考“问题”类列表的“项目”类。“问题”有自己的一组字段

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 - 集合(Edm.String)

问题

  • 是否可以指定 QuestionList 中的每个项目都有分层数据?
  • 是否可以仅在“问题”的“标题”内搜索?
  • 我看到的唯一可能性是分别为“问题”创建索引并使用它

我在 MSDN 中看到的唯一相关点是下面的段落,我不太明白

分面导航中的级别

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

4

1 回答 1

2

对于您的第一个问题,Azure 搜索不允许分层数据类型,并且要进行搜索,您需要像对作为集合创建的 QuestionList 字段所做的那样展平数据。如果您还询问如何根据此集合中的项目过滤结果,您可以使用 OData 表达式来执行此操作,例如 $filter=QuestionList/any(t: t eq 'Question1') ( https://msdn.microsoft.com /en-us/library/azure/dn798921.aspx )

我认为对于您的第二个问题,您只对“标题”“问题”感兴趣,对吗?为此,您可以使用 SearchFields 参数 ( https://msdn.microsoft.com/en-us/library/azure/dn798927.aspx )。

利亚姆

于 2015-02-13T21:14:17.860 回答