Я работал над DisMaxQueryBuilder, чтобы создать запрос, с помощью которого я могу получить подобъект внутри объекта. Чтобы было понятнее, у меня есть объектный актив, который содержит набор «тегов».
public class Asset extends BaseEntity
{
String name;
String code;
Language defaultLanguage;
@Singular Set<Participant> participants;
@Singular Set<Tag> tags;
}
В моем коде я использовал построитель запросов ниже, чтобы искать определенную фразу для определенного поля внутри объекта актива. Используя указанный ниже запрос, введенная фраза будет сопоставляться с каждым элементом в поле «имя», и в случае попадания мы получим этот объект обратно.
DisMaxQueryBuilder builder = disMaxQuery()
.add(matchPhrasePrefixQuery("name",phrase).boost(1.0f));
Теперь моя проблема в том, что я хочу, чтобы введенная фраза была просмотрена в поле тегов в объекте объекта, а затем совпадала с полем описания объекта тега для попадания и пропуска.
public class Tag extends BaseEntity
{
String type;
String description;
Map<String, Description> descriptions;
}
Я не смог найти способ перебора тегов, а затем искать каждое поле тега одно за другим для попадания и пропуска, используя один и тот же построитель запросов.
В абстрактном представлении мне нужно что-то подобное, но я не знаю, как этого добиться с помощью этого построителя запросов.
.add(matchPhrasePrefixQuery("tags.eachTag.description",phrase).boost(1.0f)
)
Если кто-нибудь знает обходной путь для достижения этой функциональности, я был бы очень признателен за эти усилия.
Спасибо