Поиск Azure сопоставляет два свойства одного и того же объекта - PullRequest
0 голосов
/ 17 октября 2019

Я хочу выполнить запрос на соответствие двум свойствам одного и того же элемента в под-коллекции.

Пример:

[
  {
    "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 ]

1 голос
/ 17 октября 2019

Только что увидел официальный документ. На данный момент нет поддержки для коррелированного поиска:

Это происходит потому, что каждое предложение применяется ко всем значениям его поля во всем документе, поэтому нет понятия «текущий поддокумент»

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

0 голосов
/ 22 октября 2019

Решением, которое я реализовал, было создание различных коллекций для каждого типа контакта.

Таким образом, я могу искать прямо, скажем, в коллекции электронной почты без необходимости коррелированного поиска. Возможно, это решение не для всех случаев, но в этом случае оно работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...