Azure搜索与同一对象的两个属性匹配

时间:2019-10-16 21:16:53

标签: azure lucene azure-cognitive-search

我想对子集合中同一项目的两个属性进行查询匹配。

示例:

[
  {
    "name": "Person 1",
    "contacts": [
        { "type": "email", "value": "person.1@xpto.org" },
        { "type": "phone", "value": "555-12345" },
    ]
  }
]

我希望能够通过emails进行搜索,而不是包含xpto.org,但是,
做类似以下的事情是行不通的:

search.ismatchscoring('email','contacts/type,','full','all') and search.ismatchscoring('/.*xpto.org/','contacts/value,','full','all')

相反,它将在主要对象的上下文中考虑条件,并且如下所示的对象也将匹配:

[
  {
    "name": "Person 1",
    "contacts": [
        { "type": "email", "value": "555-12345" },
        { "type": "phone", "value": "person.1@xpto.org" },
    ]
  }
]

在没有附加类型和值的附加字段的情况下,是否可以解决此问题?

2 个答案:

答案 0 :(得分:1)

只看了官方文件。目前,不支持相关搜索:

  

之所以会发生这种情况,是因为每个子句都适用于其在   整个文档,因此没有“当前子文档”的概念

https://docs.microsoft.com/en-us/azure/search/search-howto-complex-data-types

https://docs.microsoft.com/en-us/azure/search/search-query-understand-collection-filters

答案 1 :(得分:0)

我实现的解决方案是为每个联系人类型创建不同的集合。

这样,我可以直接搜索电子邮件集合,而无需进行相关搜索。它可能不是所有情况下的解决方案,但在这种情况下效果很好。

相关问题