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

Azure搜索匹配同一对象的两个属性,azure,lucene,azure-cognitive-search,Azure,Lucene,Azure Cognitive Search,我想对子集合中相同项的两个属性进行查询匹配 例如: [ { "name": "Person 1", "contacts": [ { "type": "email", "value": "person.1@xpto.org" }, { "type": "phone", "value": "555-12345" }, ] } ] 我希望能够通过电子邮件搜索,而不是包含xpto.org但是, 执行以下操作不起作用: search.ism

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

例如:

[
  {
    "name": "Person 1",
    "contacts": [
        { "type": "email", "value": "person.1@xpto.org" },
        { "type": "phone", "value": "555-12345" },
    ]
  }
]
我希望能够通过
电子邮件搜索,而不是包含
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" },
    ]
  }
]

有没有办法在没有附加字段连接类型和值的情况下解决这个问题?

刚刚看到了官方文档。目前,不支持相关搜索:

发生这种情况是因为每个子句都应用于其字段的所有值 整个文档,因此没有“当前子文档”的概念


而且

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


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

您是否尝试过移动第一个子句(联系人类型电子邮件)对于filter子句?我实现的解决方案是为每个联系人类型创建不同的集合。通过这种方式,我可以直接在电子邮件集合中搜索,而不需要相关搜索。