Я хочу сравнить поля между потенциально миллионами документов в коллекции монго. Поля будут определены заранее, и каждому полю будет присвоен вес. Эти веса затем будут использоваться для возврата пар документов, представляющих предложения для «похожих» документов. Например, если сравниваются 2 документа, и оба имеют одинаковое значение для поля 'first_name', на таблицу весов будут ссылаться, и к баллу для пары будет добавлен этот вес. Если между двумя полями одинаковое поле, счет будет обновлен, чтобы отразить более высокое сходство.
В настоящее время я подхожу к этому, перебирая исходный набор результатов, затем имея встроенную итерацию, которая также просматривает набор результатов и сравнивает каждый документ с документом, на котором работает первый итератор (крайне неэффективно). В настоящее время все это выполняется php, поскольку он захватывает элементы через курсор.
Я открыт для любых предложений, включая реализации MapReduce (на самом деле не кажется применимыми), манипуляции с курсором, почти все, что вы можете придумать, чтобы упростить процесс, потому что я сейчас работаю на сложности O (n ^ 2) ( Ну, немного лучше, когда я пропускаю документы, которые были рассмотрены первым итератором).