Теперь я думаю, что есть два способа достижения желаемого эффекта (без настройки исходного кода MLT).
Первый вариант: выполнить первоначальный запрос MLT с помощью обработчика MLT , добавив параметр &mlt.interestingTerms=details
.Это включает в себя список терминов, которые были сочтены интересными, ранжированы с учетом их относительного повышения.Обычное поведение использует обнаруженные термины для тех же полей mlt.fl, чтобы найти похожие документы.Например, ответ будет включать в себя что-то вроде:
"interestingTerms":
["field_b:foo",5.0,"field_b:bar",2.9085307,"field_b:baz",1.67070794]
(Поскольку интересным в этом начальном запросе является только то, что интересно, то есть условияоценка работы.)
Явное повторное объединение этой интересной информации в новый запрос ИЛИ field_a:foo^5.0 field_a:bar^2.9085307 field_a:baz^1.67070794
сводится к использованию текста примера поля В для поиска документов, похожих в поле А, и может имитировать именно тот видзапроса по умолчанию MLT выполняет в своем обычном поле модели.
Второй вариант: захватить фактический текст поля B документа модели и передать его непосредственно как тело ContentStream , которое будет использоваться вместозапрос для указания модельного документа.Затем нацелите mlt.fl в поле A для сбора аналогичных результатов.Например, фрагмент параметров может быть …&stream.body=foo bar baz&mlt.fl=field_a&…
.Опять же, чистый эффект, заключающийся в том, что исходный текст модели из field_b находит документы, похожие только на field_a.