【问题标题】:Azure Search Hierarchical Search FieldAzure 搜索分层搜索字段
【发布时间】:2015-02-14 05:14:17
【问题描述】:

我正在为一个项目评估 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
  • 问题列表 - 集合(Edm.String)

问题

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

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

分面导航中的级别

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

【问题讨论】:

    标签: search odata azure-cognitive-search


    【解决方案1】:

    对于您的第一个问题,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)。

    利亚姆

    【讨论】:

    • 感谢更新。对于问题#2; “问题”字段中有 2 个字段 - “标题”和“描述”。我想在 SearchField 搜索中仅在每个问题的平铺内指定。诸如 searchFields=Question.Title 之类的东西。这有效吗?
    • @SridharVenkat 你找到替代方案了吗?
    • @eglasius,分层数据类型,我们不喜欢它......但我最初做了研究,这些网址可能会帮助msdn.microsoft.com/library/ff478141.aspxazure.microsoft.com/en-in/documentation/articles/…
    • 谢谢!第二个链接确实显示了一种简单相等匹配(包括和/或字段)的方法,该方法适用于具有很少字段的复杂类型。当然,我们仍然有 Collection(string) 支持的直接匹配限制,即在匹配元素时不能进行基于范围的搜索或任何其他类型的复杂表达式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多