Привет сообщество stackoverflow,
У меня есть, вероятно, какая-то особая проблема частичного сопоставления (ранжирования), которую я не мог эффективно решить в базе данных до сих пор.Предположим, у меня есть следующие объекты JSON, хранящиеся в базе данных (в моем случае: MongoDB).
1
{"first_name": "hans", "last_name": "maier "," has_debt ":" true "}
2
{" name ":" hans peter "," has_debt ":" Maybe "," random_field": 1}
3
{" first_name ":" hans "," last_name ":" müller "," has_debt ":" true "," random_stuff":" true "}
Теперь предположим, что следующий объект недавно доставлен:
4
{" first_name ":" hans ","last_name ":" müller "," has_debt ":" true "," country ":" US and A "}
Мне нужен для объекта № 4 следующий рейтинг записей в базе данных:# 3, # 1, # 2, основанные на количестве точных совпадений ключ-значение (= "размер пересечения").
Например: # 3 и # 4 имеют ровно три совпадающие пары ключ-значение,
Примечания: Я явно не хочу нечеткого соответствия текстовых фрагментов или нормализации данных, например, (не) объединять поля имени / фамилии.Каждое поле имеет одинаковую важность.
Знаете ли вы подходящую методику ранжирования MongoDB или трансформацию задачи для решения этой задачи?Если нет, есть ли альтернативная технология для эффективного решения этой проблемы?
У меня есть наивная реализация R для решения этой проблемы, но я ищу (в лучшем случае) запрос, который решает это эффективно (имасштабируемый).
Заранее спасибо!С уважением, Патрик