Smart Mastering по соображениям производительности требует, чтобы пользовательские алгоритмы возвращали cts: запросы и выполнялся один поиск.В идеале вы должны сбалансировать вес этих запросов так, чтобы при соблюдении правильных критериев эти веса суммировались бы за порогом, чтобы инициировать слияние.
Есть несколько вариантов, которые вы можете попробовать, и вам нужно будет решить, соответствуют ли они вашим потребностям.
1.) В записи «значения» карты (или объекта JSON, если используется JavaScript) вставлен фактический узел документа, поэтому fn: root / fn.root (http://docs.marklogic.com/fn.root))Вы можете вызвать узел, чтобы захватить корень и затем перейти к значению EIN. Затем вы можете условно добавить свой взвешенный запрос, основываясь на том, что xdmp: оценка или cts.estimate (http://docs.marklogic.com/cts.estimate) дают вам счет.
2.) У вас может быть два разных набора параметров сопоставления и слияния. Первый набор сопоставляет / объединяет в EIN, добавляя специальную коллекцию к документам без совпадений. Второй набор запускается против коллекции несоответствий впервый запуск, и он использует ваш запрос Левенштейна.
Я думаю, что первый вариант, вероятно, является наилучшим путем.