Контентная фильтрация с помощью elasticsearch

Я пытаюсь создать систему фильтрации на основе контента, которая классифицирует продукты, назначая им функции, которые читаются как { salty: 0, sweet: 0.5, bitter: 0.7}. Это означает, что я даю каждому продукту n-мерный вектор, в данном случае [0, 0.5, 0.7].

Для данного продукта я теперь хотел бы найти «похожие» продукты, вычислив расстояние между векторами. Таким образом, для двух продуктов [0.2, 0.2, 0.8] и [0.4, 0.9, 0.9] евклидово расстояние составляет примерно 0,78, что должно быть их «оценкой» (чем меньше, тем лучше).

Как мне это сделать с помощью elasticsearch? Подходит ли elasticsearch для такой задачи?

Обратите внимание, что реальная проблема имеет гораздо больше, чем 3 измерения.


person Thorben Croisé    schedule 19.05.2016    source источник
comment
Этот ответ может вам помочь: stackoverflow.com/a/24951668/2483542   -  person TroyAndAbed    schedule 19.05.2016
comment
И как вы вычисляете это distance? Это то, что можно индексировать вместе с самим вектором?   -  person Andrei Stefan    schedule 19.05.2016
comment
Я думал о простом и простом евклидовом расстоянии, чтобы узнать, насколько близки два произведения.   -  person Thorben Croisé    schedule 20.05.2016
comment
У меня был еще один вопрос в моем предыдущем комментарии. Можете ли вы ответить и на этот вопрос?   -  person Andrei Stefan    schedule 20.05.2016
comment
Может быть, я не понимаю... как бы вы проиндексировали расстояние от любой точки запроса?   -  person Thorben Croisé    schedule 20.05.2016
comment
Я отредактировал вопрос, чтобы было понятнее, чего я хочу.   -  person Thorben Croisé    schedule 20.05.2016
comment
Теперь я понимаю. Я думал над сценарием для этого. А решение со скриптингом есть в комментарии от @TroyAndAbed.   -  person Andrei Stefan    schedule 20.05.2016
comment
Давайте продолжим обсуждение в чате.   -  person Thorben Croisé    schedule 20.05.2016
comment
Вы когда-нибудь находили решение этой проблемы?   -  person Simon Steinberger    schedule 02.12.2017