Менеджер синонимов для Optimizely Graph – PÄR WISSMARK – АРХИТЕКТОР И РАЗРАБОТЧИК РЕШЕНИЙ OPTIMIZELY

Если вы используете Optimizely Graph для поиска, синонимы — это один из самых простых способов повысить релевантность, не затрагивая контент. Но их также легко неправильно настроить: вы можете успешно загружать синонимы и по-прежнему видеть нулевой эффект в своих запросах, если слот и языковой контекст не совпадают.

В этом посте я расскажу о практическом шаблоне: небольшом плагине администратора Optimizely для управления синонимами Graph, безопасного хранения черновиков в хранилище динамических данных Optimizely (DDS) и публикации в Graph только тогда, когда редактор решит, что он готов. Я также покажу, как проверить, что синонимы действительно достигли Graph, и как выполнять запросы с включенными синонимами, поскольку в Graph синонимы вступают в силу только тогда, когда вы явно включаете их в запрос.

Почему плагин…

В Optimizely Graph синонимы хранятся в виде ресурса («файла синонимов») в шлюзе Graph, а не в базе данных CMS. Загрузка осуществляется через конечную точку REST, а синонимы применяются только во время запроса, когда запрос явно разрешает их использование.

Это совершенно нормально для разработчика, использующего Postman, но в настоящей команде быстро возникают некоторые потребности:

  • Редакторы хотят, чтобы пользовательский интерфейс управлял синонимами, не затрагивая Postman.
  • Разработчикам нужна безопасность: черновики, проверка и явный этап публикации.
  • Всем нужна уверенность в том, что содержимое Graph соответствует опубликованному.

Вот почему я хотел использовать собственный рабочий процесс CMS: безопасно редактировать, целенаправленно публиковать и проверять, что на самом деле хранит Graph.

Как синонимы работают в Optimizely Graph

Синонимы хранятся в «слотах»
График поддерживает два слота синонимов: ОДИН и ДВА. Вы загружаете синонимы в слот, а затем ссылаетесь на этот слот в запросе. Это полезно для настройки: вы можете сохранить «безопасные» синонимы в ОДНОМ, а «более агрессивные» расширения в ДВА и выбирать, какой слот(ы) применять в зависимости от контекста.

Синонимы применяются только тогда, когда они включены в запросе.
Загрузка синонимов не везде автоматически меняет поведение поиска. Синонимы включаются для каждого оператора фильтра путем добавления synonyms: ONE или synonyms: [ONE, TWO] на ваш запрос.

Read more:  DG Okonjo-iweala: Партнерства жизненно важны для оценки потребностей для реализации соглашения IFD

Языки в Graph обрабатываются в двух местах, и они должны совпадать. Когда вы загружаете синонимы, вы можете ограничить их конкретным языком, передав language_routing (например sv-SE). Затем Graph сохраняет отдельный ресурс-синоним для каждого слота и языка, поэтому «slot ONE + sv-SE» отличается от «slot ONE + en-US».

При запросе Graph применяет синонимы в языковом контексте запроса, который контролируется locale. Это означает, что ваш запрос должен использовать тот же языковой стандарт, что и загруженные вами синонимы. Если вы загружаете с language_routing=sv-SEпротестируйте с locale: sv-SE (нет ALL).

Пример:

Вот почему я построил это

Это решение представляет собой плагин администратора Optimizely CMS, который дает редакторам безопасный способ управления синонимами Optimizely Graph. Редакторы работают с текстовым форматом синонимов (по одному правилу на строку, поддерживаются оба эквивалентных правила, например a, b, c и правила замены, такие как a, b => c, d) внутри приложения Vue, размещенного на странице плагина. Страница плагина загружает приложение Vue, а все операции выполняются через конечные точки API, обеспечивая четкое разделение пользовательского интерфейса и логики предметной области.

Черновики хранятся в динамическом хранилище данных Optimizely (DDS), проверяются на стороне сервера (синтаксис, ограничения на длину строк, ограничения на количество записей) и передаются в Graph только тогда, когда редактор нажимает «Опубликовать».

Примечание о DDS и масштабировании: DDS используется здесь, потому что он прост, встроен и хорошо работает для небольших и средних наборов данных, но он не предназначен для высокой пропускной способности или очень больших объемов. Если вы ожидаете большое количество записей-синонимов, частые записи или тяжелые запросы/фильтрацию в масштабе, рассматривайте DDS как удобную отправную точку и рассмотрите возможность перемещения черновиков хранилища и журналов аудита в более подходящий вариант сохранения (например, выделенные таблицы SQL или внешнее хранилище), сохраняя при этом тот же рабочий процесс публикации/проверки.

Публикация и проверка

Публикация осуществляется через конечную точку REST шлюза Graph:

Read more:  Bne Intellinews - Россия предупреждает о туристической опасности от потока вулкана Камчатки

Опубликовать (загрузить синонимы)

  • ПОМЕЩАТЬ /resources/synonyms
  • Тип контента: text/plain
  • Параметры запроса: synonym_slot=one|two и необязательно language_routing=

Проверить (прочитать, что хранится в Graph)

  • ПОЛУЧАТЬ /resources/synonyms с теми же параметрами слота/языка

Эта проверка обратного чтения делает очевидным то, что в данный момент хранит Graph, и устраняет множество догадок при устранении неполадок. Наконец, чтобы фактически использовать синонимы, запросы GraphQL должны включать их для каждого поля с помощью synonyms: ONE или synonyms: [ONE, TWO] и используйте соответствующий языковой стандарт.

Настраивать

Выполните следующие действия, чтобы настроить менеджер синонимов.

Загрузите код

Полный пример доступен на GitHub:

Использованы исходные файлы:

Установите необходимые пакеты

Если вы уже используете клиент Optimizely Graph в своем решении, сохраните его. Этот плагин в основном использует конечные точки REST шлюза Graph для загрузки/проверки синонимов, поэтому HttpClient достаточно. (Клиент Graph по-прежнему полезен для запросов GraphQL и инструментов схемы.)

Регистрация услуг

В настройке DI (Program.cs/Startup) зарегистрируйте службу синонимов и службу Graph API:

Конфигурация

Вам потребуются учетные данные Content Graph в конфигурации (предпочтительно вводимые через переменные среды или секретное хранилище в реальных развертываниях):

Демо-база данных и вход
Репозиторий включает в себя минимальную базу данных Optimizely и демонстрационный вход в систему, чтобы вы могли быстро запустить образец. Только для локальной разработки — не используйте повторно эти учетные данные за пределами локальной/демо-версии и немедленно измените их, если вы адаптируете решение.

Запустите его (быстрый контрольный список)

  • Клонируйте репозиторий и настройте учетные данные Content Graph.
  • Запустите сайт.
  • Использовать [url]/util/register, чтобы создать нового пользователя-администратора.
  • В Optimizely перейдите в «Дополнения» → «Менеджер синонимов».
  • Создайте запись синонима и сохраните черновик.
  • Опубликуйте в Graph, затем запустите проверку загрузки для того же слота и языка.
  • Протестируйте запрос GraphQL, используя ту же локаль и synonyms: [ONE, TWO].

Обзор пользовательского интерфейса

Пользовательский интерфейс дает вам четкое представление о вашей библиотеке синонимов. В каждой строке отображается термин, его синонимы, слот (один/два), язык и является ли правило «эквивалентным» или «заменяющим». Вы также увидите, когда он последний раз обновлялся и является ли он черновиком или уже опубликован. Это сразу дает понять, над чем ведется работа, а что над тем, что находится вживую.

Read more:  Netflix переносит игры для вечеринок на телевизор ⋅

Интерфейс построен на Vue и простом CSS/JS и стилизован под внешний вид администратора Optimizely.

Модальное изменение синонима: редактируйте термин, слот, язык, направление/тип и значения синонима.

Модальное окно журнала публикации: показывает попытки публикации с отметкой времени, действием, сообщением и именем пользователя. Сохраняются 10 последних записей журнала.

Вкладка «Проверка»: выберите слот + язык и нажмите «Проверить загрузку», чтобы прочитать данные непосредственно из Graph и подтвердить, что там хранится.

Результаты проверки: показывает баннер успеха и возвращенные записи для выбранного слота/языка.

Заключение

Это решение было протестировано в Optimizely 12 и Optimizely 13 Preview 3.

Подводя итог, можно сказать, что синонимы Optimizely Graph — это мощный инструмент, но они также очевидны: вы не просто «загружаете синонимы, и они работают». Вам нужен повторяемый процесс управления ими, вам необходимо правильно определить их область действия (слот и язык) и включить их в запросы, где они действительно имеют значение.

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

Это пример решения, которое должно быть практичным и простым в адаптации. Если вы попробуете это и у вас есть предложения, улучшения или вы столкнетесь с пограничными случаями (особенно в отношении языковой маршрутизации, слотов или поведения проверки), я буду очень признателен за ваши отзывы, не стесняйтесь открывать проблему или сообщать о проблеме в репозитории GitHub.

Ещё по этой теме

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.