Реализуйте поиск по тегам с эластичным поиском приложений

Контекст

Я создаю веб-сайт для местной коммуны, у меня есть список «контактных лиц», на которые, помимо прочего, возложены обязанности.

Пользователи сайта должны иметь возможность искать определенную ответственность, а затем находить человека, которому поручено это направление работы.

Проблема

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

Пример документа "контактное лицо"

      {
    "firstname": "John",
    "lastname": "Doe",
    "responsibilities": "Fire safety, Budgeting, Weddings"
}

Когда я использую панель поиска, напечатанный текст будет отображать все поле

Очевидно, что это не очень хороший опыт. Другая проблема заключается в том, что я не могу осмысленно фасетировать и фильтровать значения.

Что я пробовал

Один из возможных подходов - создать несколько полей «ответственности», например:

      {
    "responsibility_1": "Fire safety",
    "responsibility_2": "Budgeting",
    ...
}

Но это кажется довольно грязным, требует от меня жесткого ограничения и все же не решает проблему фасетирования.

Еще я подумал об отключении поле для поиска. Затем я применил бы усиления и фильтры на основе текущего запроса. Однако это будет означать, что можно искать только «ответственность», а не на основе других полей документа.

Как я могу реализовать такую ​​«пометку»?или мне не повезло, когда дело доходит до такого рода задач и нужна родная резинка?

Мне нужен какой-то тип поля «массив», но поиск приложений не реализует такой тип. Я привязан к платформе поиска приложений, и переход на собственный эластичный поиск будет означать, что мне потребуется довольно много времени.

1 ответ

Вам нужно создать такой массив значений:

      {
    "firstname": "John",
    "lastname": "Doe",
    "responsibilities": ["Fire safety", "Budgeting", "Weddings"]
}

Массивы поддерживаются в appsearch, как указано в документации.

      3. Arrays are supported
Другие вопросы по тегам