Читайте также:
|
|
Механизм построения рекомендаций был реализован в виде программного модуля для Python/Flask backend ИС “Открытая Карелия”. Работа с рекомендациями в рамках модуля разделена на два этапа:
1. Построение кэша рекомендаций. При каждом запуске backend ИС “Открытая Карелия” происходит последовательное вычисление значений баллов близости для всех пар объектов системы и всех критериев близости. Вычисленные значения индексируются совокупностью упорядоченной пары идентификаторов пары объектов и идентификатора критерия близости.
2. Предоставление программного интерфейса получения рекомендаций по идентификатору объекта и критерия близости. Выборка подборки рекомендованных объектов величины N осуществляется путем выбора N объектов, которым соответствуют N наибольших значений баллов близости при заданном критерии близости.
Использование предварительного кэширования обусловлено прежде всего требованиями производительности, так как вычисление баллов близости в процессе обращения пользователя к системе может привести к существенной задержке ее ответа. Однако, такой подход сопряжен с существенными ограничениям:
1. Объем требуемой памяти прямо пропорционален количеству объектов в БД.
2. Для обновления данных в кэше необходим перезапуск веб-приложения.
3. При запуске веб-приложения сервис рекомендаций недоступен на время построения кэша.
Исходя из этих ограничений, одно из направлений улучшения работы системы подбора рекомендаций состоит в реализации механизма background-кэширования.
На рисунке 6 приведена архитектура кэширования рекомендаций.
Рисунок 6. Архитектура кэширования рекомендаций
Данные о тегах хранятся в коллекции tagsCollectionCache, которая имеет вид {имя_тега: {'forms': [список_словоформ], 'languages': язык_тега}. Также некоторые объекты имеют поле “associated_tags” в котором хранятся некоторые теги объекта. Поскольку все теги не хранятся в базе данных в коллекции «objects», это усложняет процесс поиска тегов объекта. Для этого существует функция getObjectTags, которая берет все теги из коллекции “tags”, проверяет наличие каждой словоформы в каждом объекте и возвращает
Дата добавления: 2015-10-16; просмотров: 89 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Ранжирование в Sphinx | | | Предоставление пользовательского интерфейса получения рекомендаций |