Доступ к запросу Lucene в поисковом лайнере поиска script
Я бы хотел написать пользовательский счетчик Elastic Search, который принимает все термины из документа в индексе, все термины из запроса и на основе некоторой пользовательской логики вычисляют оценку.
После некоторых исследований кажется, что наиболее простой способ реализовать пользовательский счетчик в Elastic Search в Java - это использовать его функции "родного сценария" (т.е. реализовать AbstractDoubleSearchScript). Проблема в том, что я не могу найти способ доступа к исходному объекту запроса в script. Я могу получить доступ только к соответствующему документу и его полям. Есть ли способ получить доступ к объекту запроса, который использовался для поиска?
В качестве альтернативы, каков наилучший способ запуска пользовательского кода Java для каждого результата и оценка соответствия с использованием моего собственного (сложного) алгоритма, который должен знать полный список терминов как для запроса, так и для документа?
Ответы
Ответ 1
Внедрить пользовательский класс запроса и обернуть фактический запрос (например, логический запрос) в качестве его подзапроса. В классе Query у вас есть api для реализации пользовательского счетчика, в котором вы можете получить доступ как к запросу, так и к текущему документу, который вы забиваете. Чтобы мелкозернистое зерно контролировало счет, реализуйте пользовательский класс подобия.