Подтвердить что ты не робот

Доступ к запросу Lucene в поисковом лайнере поиска script

Я бы хотел написать пользовательский счетчик Elastic Search, который принимает все термины из документа в индексе, все термины из запроса и на основе некоторой пользовательской логики вычисляют оценку.

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

В качестве альтернативы, каков наилучший способ запуска пользовательского кода Java для каждого результата и оценка соответствия с использованием моего собственного (сложного) алгоритма, который должен знать полный список терминов как для запроса, так и для документа?

4b9b3361

Ответ 1

Внедрить пользовательский класс запроса и обернуть фактический запрос (например, логический запрос) в качестве его подзапроса. В классе Query у вас есть api для реализации пользовательского счетчика, в котором вы можете получить доступ как к запросу, так и к текущему документу, который вы забиваете. Чтобы мелкозернистое зерно контролировало счет, реализуйте пользовательский класс подобия.